关闭。这个问题需要细节或清晰。它目前不接受答案。**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。
两年前关门了。改进这个问题打电话的时候,顺序重要吗 DROP TABLE IF EXISTS <some table> 在sql脚本的顶部?
DROP TABLE IF EXISTS <some table>
aiqt4smr1#
是的,如果你打电话的话 DROP TABLE IF EXISTS.... 在编写脚本之后,它将删除已经创建的新表,这可能是您最不希望看到的。如果你打电话 DROP TABLE IF EXISTS.... 在此之前,如果表已经存在,请确保脚本不会失败
DROP TABLE IF EXISTS....
6ss1mwsb2#
如果您担心外键,那么应该首先删除子表。如果一个表在另一个表中引用,则不能删除该表。但暂时禁用密钥检查更容易。
SET FOREIGN_KEY_CHECKS = 0; DROP TABLE ...; ... DROP TABLE ...; SET FOREIGN_KEY_CHECKS = 1;
那你就不需要关心table的摆放顺序了。注意,当您启用键检查时,架构应该是“干净的”——不应该有任何外键引用到不存在的表。否则 SET FOREIGN_KEY_CHECKS = 1 会失败的。
SET FOREIGN_KEY_CHECKS = 1
2条答案
按热度按时间aiqt4smr1#
是的,如果你打电话的话
DROP TABLE IF EXISTS....
在编写脚本之后,它将删除已经创建的新表,这可能是您最不希望看到的。如果你打电话
DROP TABLE IF EXISTS....
在此之前,如果表已经存在,请确保脚本不会失败6ss1mwsb2#
如果您担心外键,那么应该首先删除子表。如果一个表在另一个表中引用,则不能删除该表。但暂时禁用密钥检查更容易。
那你就不需要关心table的摆放顺序了。
注意,当您启用键检查时,架构应该是“干净的”——不应该有任何外键引用到不存在的表。否则
SET FOREIGN_KEY_CHECKS = 1
会失败的。