我刚刚在我的 Rails 应用程序中发现了一个错误,该错误会导致某些记录不会与其关联的对象一起被删除。该错误已修复,但我的数据库中现在有数千条记录,其中外键值指向不存在的记录。
是否可以删除表中的所有记录,其中整数外键引用 SQL 中不存在的另一个表中的记录?如何?
最佳答案
delete from child_table where not exists
(select 1 from parent_table where parent_table.id=child_table.related_id)
下一步当然是立即创建一个 FOREIGN KEY 约束(除非你在 MySQL MyISAM 上,在这种情况下你不走运)。
关于SQL:删除具有无效外键的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1652436/