删除所有MySQL外键约束不会失败的地方

时间:2011-08-08 06:06:50

标签: mysql foreign-keys foreign-key-relationship sql-delete

我正在尝试删除一些记录,但收到以下错误:

  

无法删除或更新父行:外键约束失败

问题是,我希望删除的100条记录中只有1或2条中的外键约束失败。我希望编写一个删除这些98-99记录的查询, 跳过失败的 的1或2,我稍后可以手动检查和删除/修改。不是因为一些有问题的记录而停止,而是继续其他人,忽略了这一点。

有没有一种巧妙的方法可以做到这一点?

2 个答案:

答案 0 :(得分:7)

您必须LEFT JOIN引用表并添加一个条件,表示该表中缺少该行。

例如:

DELETE a FROM a
LEFT JOIN b ON b.a_id = a.id
WHERE b.a_id IS NULL;

答案 1 :(得分:2)

使用ignore:

DELETE IGNORE ...

http://dev.mysql.com/doc/refman/5.0/en/delete.html