2011-12-16 82 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的表格)並且沒有被任何其他故事引用。那些你可以截斷。然後按照你的方式去刪除。如果按照正確的順序截斷/刪除,則不會違反約束條件。或者你可以放棄所有的約束。截斷表格。然後重新添加限制。