【发布时间】:2021-03-02 05:38:39
【问题描述】:
我在 postgresql 中有两个表,activity 和 contacts。
一个activity可以有多个数组形式的联系人,像这样
contact Id = {23,54,34}.
我只想在联系人表中删除该活动的所有联系人 ID 时删除该活动,并在至少一个联系人 ID 仍未删除时保留该活动。
Deleted At 是联系人表中的列,用于检查已删除的联系人。我不想使用 NOT IN。
活动表
id contact Id
-------------------
16 {60,61,23}
15 {}
5 {59}
6 {}
【问题讨论】:
-
您使用内联数组而不是正确的外键和映射表是否有原因? (见这里:stackoverflow.com/questions/41054507/…)
-
你的上级应该已将其更改为单独的表。此时是否可以进行数据库设计更改?
-
如果我可以将这个 NOT IN 替换为一个也会有帮助的连接
-
这是一个非常糟糕的设计,您遇到的问题是该糟糕设计的直接结果。如果要删除活动中的行,为什么要使用 UPDATE?顺便说一句,您还应该避免使用那些可怕的引用标识符wiki.postgresql.org/wiki/…
-
请不要破坏您的帖子。通过在 Stack Exchange 网络上发帖,您已在 CC BY-SA 4.0 license 下授予 Stack Exchange 分发该内容的不可撤销的权利(即无论您未来的选择如何)。根据 Stack Exchange 政策,帖子的非破坏版本是分发的版本,因此,任何破坏行为都将被撤销。如果您想了解更多关于删除帖子的信息,请参阅:How does deleting work?
标签: sql postgresql join