Postgres - 级联删除不起作用

Posted

技术标签:

【中文标题】Postgres - 级联删除不起作用【英文标题】:Postgres - Cascade delete not working 【发布时间】:2016-07-17 14:45:18 【问题描述】:

我有一个名为“Reviews”的表,它引用了“ReviewSetups”表中的一条记录。当我删除 ReviewSetup 时,我还要删除所有子评论(因此级联删除)。

我已经在评论表上设置了如下外键,但是当我删除父 ReviewSetup 时没有任何内容被删除。

我在 db 中还有其他实体,我使用 FK 以完全相同的方式迁移它们并且工作正常。

有人知道这里发生了什么吗?

编辑

代码如下:

-- Foreign Key: "FK_Reviews_ReviewSetup_Id_ReviewSetups_Id"

-- ALTER TABLE "Reviews" DROP CONSTRAINT "FK_Reviews_ReviewSetup_Id_ReviewSetups_Id";

ALTER TABLE "Reviews"
  ADD CONSTRAINT "FK_Reviews_ReviewSetup_Id_ReviewSetups_Id" FOREIGN KEY ("ReviewSetup_Id")
      REFERENCES "ReviewSetups" ("Id") MATCH SIMPLE
      ON UPDATE CASCADE ON DELETE CASCADE;

【问题讨论】:

meta.***.com/questions/285551/… 添加你删除父行然后选择子行的输出,他们在那里?.. “添加你删除父母的输出”到底是什么意思? 【参考方案1】:

如果您不得不一次又一次地删除数据库,最好禁用约束,直到找到正确的罪魁祸首或重新设计架构。

禁用约束并删除数据,然后重新启用。

禁用约束: Alter table tablename NOCHECK CONSTRAINT constraintname

再次启用: Alter table tablename CHECK CONSTRAINT constraintname

【讨论】:

【参考方案2】:

最终删除了整个数据库并从头开始重新运行迁移。不知何故解决了它。某处,不知何故,配置有点偏离。真的很好奇到底是什么罪魁祸首……

【讨论】:

以上是关于Postgres - 级联删除不起作用的主要内容,如果未能解决你的问题,请参考以下文章

JPA/Hibernate 级联删除不起作用

sql级联更新和级联删除不起作用

删除级联在这种情况下不起作用[重复]

MySQL 5.5.30 级联触发器不起作用

级联在保存数据时不起作用

获取级联TouchEvent的目标不起作用