【发布时间】:2011-08-23 17:19:47
【问题描述】:
我尝试删除记录,但出现约束错误并且查询停止。或者我使用 'delete ignore ...' 但查询也停止,只有警告。我无法设置约束检查,我只需要删除没有约束的记录。也许mysql对此有一些命令?我什么也没找到。
【问题讨论】:
标签: mysql foreign-keys sql-delete
我尝试删除记录,但出现约束错误并且查询停止。或者我使用 'delete ignore ...' 但查询也停止,只有警告。我无法设置约束检查,我只需要删除没有约束的记录。也许mysql对此有一些命令?我什么也没找到。
【问题讨论】:
标签: mysql foreign-keys sql-delete
我能想象的唯一方法是编写一个查询,从您的主表中返回没有详细信息的行,然后将此查询的结果与主表连接起来,类似于
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 来检查
【讨论】:
在表/约束定义中添加“on delete cascade”。
【讨论】: