【问题标题】:Postgres - Cascade delete not workingPostgres - 级联删除不起作用
【发布时间】: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;

【问题讨论】:

标签: postgresql relational-database


【解决方案1】:

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

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

禁用约束: Alter table tablename NOCHECK CONSTRAINT constraintname

再次启用: Alter table tablename CHECK CONSTRAINT constraintname

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2013-06-22
      • 2013-03-03
      • 2012-11-18
      • 2011-06-11
      • 2018-06-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多