2013-04-30 33 views
0

空表如何可以拋出「外鍵約束失敗」? 我有兩個表:「listini」和「listinoprezzi」,第二個表有第一個外部引用。然而,「listinoprezzi」是空的,當我嘗試截斷「listini」時,我得到:Mysql innodb參考完整性與空tablr

#1701 - Cannot truncate a table referenced in a foreign key constraint (`listiniprezzi`, CONSTRAINT `listiniprezzi_ibfk_4` FOREIGN KEY (`listino`) REFERENCES `listini` (`id`)) 

這怎麼可能?

回答

0

(強調)作爲TRUNCATE TABLE Syntax下記載:

爲了實現高的性能,它繞過刪除數據的DML方法。因此,它不能被回滾,它不會導致ON DELETE觸發器觸發,並且不能對具有父子外鍵關係的InnoDB表執行。

儘管TRUNCATE TABLEDELETE類似,但它被分類爲DDL語句而不是DML語句。它不同於DELETE在在MySQL 5.5以下幾種方式:

[ deletia ]

  • TRUNCATE TABLE失敗用於InnoDB表,如果有從引用該表的其他表的任何FOREIGN KEY約束。允許在同一個表的列之間的外鍵約束。
+0

您可以:首先刪除外鍵約束,然後是'TRUNCATE';或者使用'DELETE'。 – eggyal 2013-04-30 10:34:45