我有很多关系约束的表。表包含完整的虚拟数据,我想在保持结构的同时截断/清空表中的数据。
每次我想清空一个表时,我都会遇到外键约束错误。我该怎么做才能暂时禁用约束,然后设置一旦删除虚拟数据就启用它。
我试过这个解决方案,但没有用!一旦我禁用,然后尝试截断,我得到fk约束错误...
//disable
SET FOREIGN_KEY_CHECKS = 0;
//enable
SET FOREIGN_KEY_CHECKS = 1;
我正在使用MySQL。
有什么想法吗?
答案 0 :(得分:7)
如果要使用truncate
,则必须删除FK,因为截断不是记录的操作。
可以使用delete
和FK,但删除是一个记录操作,需要更长的时间。
答案 1 :(得分:3)
从最后开始(只有FK的表格)并且没有被任何其他故事引用。那些你可以截断的。然后继续前进并删除。如果您以正确的顺序截断/删除,那么您将不会违反约束。或者你可以放弃所有的圣徒。截断表格。然后重新添加约束。