微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Postgres db 删除父表行而不是删除子表行数据?

如何解决Postgres db 删除父表行而不是删除子表行数据?

我有一个不是我设计的 postgres 数据库,但我有一些表的外键 (FK) 引用了其他一些表的主键 (PK)。我画了一个漂亮的小图表来展示这一点:

enter image description here

所以你可以看到我有 (3) 三个模式,它们会有正常的名称,但为了使这个例子变得简单/简单,我刚刚将它们称为 schema1schema2 schema3。现在,以表A为例,有(3)个外键,分别引用表B表D表E 直接。

我从研究/谷歌搜索中期望的行为是,如果您删除父表(具有子表中的外键引用的主键的表),则子表行删除自动执行。

我没有看到这种行为 - 也就是说,如果我从 表 A删除一条记录,该记录引用 (3) 其他三个表(表 B、表 D 和表 E),则表 A 中的记录被删除,但其他表中的所有记录都保留。

我希望能够以最简单的方式删除记录,并让所有其他引用的表也自动删除。我怎样才能做到这一点?

解决方法

相关行不会被自动删除;如果删除一行会使数据库不一致,则默认操作是抛出错误。

如果要删除依赖行,则必须使用 ON DELETE CASCADE 定义外键约束。

,

我认为在常规词汇表中,表 E 是父表,表 A 是子表。你似乎在倒叙这一点。

您可以定义 5 种不同的操作,然后从父级 (documented here) 进行删除,但在从子级删除时均不适用。不存在这样的功能。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。