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

Gar*_*eld 12 mysql foreign-keys foreign-key-relationship sql-delete

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

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

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

有一个巧妙的方法来做到这一点?

cri*_*hoj 7

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

例如:

DELETE a FROM a
LEFT JOIN b ON b.a_id = a.id
WHERE b.a_id IS NULL;
Run Code Online (Sandbox Code Playgroud)