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 - 级联删除不起作用的主要内容,如果未能解决你的问题,请参考以下文章