如何从mysql表中删除记录,但是跳过有约束错误的记录?

时间:2011-08-23 17:19:47

标签: mysql foreign-keys sql-delete

我尝试删除记录,但是获取约束错误并停止查询。或者我使用'delete ignore ...'但查询也会停止,只有警告。我无法设置约束检查,我只需要删除没有约束的记录。也许mysql有一些命令呢?我一无所获。

2 个答案:

答案 0 :(得分:3)

我能想象的唯一方法是编写一个查询,从主表中返回没有详细信息的行,然后将此查询的结果与主表连接,如

DELETE FROM table1 t
INNER JOIN 
(
   SELECT pk_column FROM table1 t1
   LEFT JOIN details1 d1 ON (d1.fk_column = t1.pk_column)
   // other LEFT JOIN[s] if you have more detail tables.
   WHERE d1.pk_column IS NULL
)a ON t.pk_column = a.pk_column

加入的替代方法,其功能几乎相同,即添加WHERE NOT EXIST以检查

答案 1 :(得分:0)

在表/约束定义中添加“on delete cascade”。