如何删除一个logging,当两个表有相互引用的外键?

删除它们的任何logging都会报告这样的错误:

错误1451(23000):无法删除或更新父行:外键约束失败

如何克服这个问题?

你有没有尝试过:

UPDATE table1 SET reference=NULL; DELETE FROM table2 WHERE id=1; DELETE FROM table1 WHERE id=1; 

通过清除引用,FK约束不应再成为问题。

你有两个select。 一个是要清除这个参考,正如大猩猩在他的post中指出的那样。 您可以通过将引用设置为null或类似的方式来执行此操作,然后以正确的顺序删除post,但这不是您通常想要执行的操作。

相反,您可能想要进行级联删除,但是您的架构未正确configuration。 级联删除意味着引用您尝试删除的post的post也将被删除。

设置表来支持级联的语法如下所示:

 CREATE TABLE car( car_id serial PRIMARY KEY, owner_id integer NOT NULL REFERENCES owner ON DELETE CASCADE); 

如果您像删除原始post(示例中的所有者)那样设置您的表格,将导致删除所有引用(例如汽车)的post。 您将避免必须清除引用并手动删除所有post。

根据数据库的types,使用ALTER TABLE命令在模式中引入级联删除。