2011-12-16 80 views
12

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

每次我想清空一个表,我得到外键约束错误。我可以做些什么来暂时禁用约束,然后设置一旦删除虚拟数据就启用它。

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

//disable 
SET FOREIGN_KEY_CHECKS = 0; 


//enable 
SET FOREIGN_KEY_CHECKS = 1; 

我正在使用MySQL。

有什么想法?

回答

7

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

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

+0

好点。我不知道.... – user311509 2011-12-16 20:24:14

3

从最后开始(只有FK的表格)并且没有被任何其他故事引用。那些你可以截断。然后按照你的方式去删除。如果按照正确的顺序截断/删除,则不会违反约束条件。或者你可以放弃所有的约束。截断表格。然后重新添加限制。