0

空表如何抛出“外键约束失败”?我有两个表:“listini”和“listinoprezzi”,第二个对第一个有外部引用。但是“listinoprezzi”是空的,当我尝试截断“listini”时,我得到:

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

这怎么可能?

4

1 回答 1

0

TRUNCATE TABLE语法中所述(强调添加):

为了达到高性能,它绕过了删除数据的 DML 方法。因此,它不能回滚,它不会导致ON DELETE触发器触发,并且不能对InnoDB具有父子外键关系的表执行。

虽然TRUNCATE TABLE类似于DELETE,但它被归类为 DDL 语句而不是 DML 语句。它与DELETEMySQL 5.5 中的以下方面不同:

[ deletia ]

  • TRUNCATE TABLE如果引用该表的其他表InnoDB存在任何约束,则该表失败。FOREIGN KEY允许在同一个表的列之间进行外键约束。
于 2013-04-30T10:25:22.980 回答