暂时禁用约束

时间:2011-12-16 20:10:43

标签: mysql database

我有很多关系约束的表。表包含完整的虚拟数据,我想在保持结构的同时截断/清空表中的数据。

每次我想清空一个表时,我都会遇到外键约束错误。我该怎么做才能暂时禁用约束,然后设置一旦删除虚拟数据就启用它。

我试过这个解决方案,但没有用!一旦我禁用,然后尝试截断,我得到fk约束错误...

//disable
SET FOREIGN_KEY_CHECKS = 0;


//enable
SET FOREIGN_KEY_CHECKS = 1;

我正在使用MySQL。

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

如果要使用truncate,则必须删除FK,因为截断不是记录的操作。

可以使用delete和FK,但删除是一个记录操作,需要更长的时间。

答案 1 :(得分:3)

从最后开始(只有FK的表格)并且没有被任何其他故事引用。那些你可以截断的。然后继续前进并删除。如果您以正确的顺序截断/删除,那么您将不会违反约束。或者你可以放弃所有的圣徒。截断表格。然后重新添加约束。