2013-04-30 34 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