gpt4 book ai didi

mysql - 在删除级联交替

转载 作者:行者123 更新时间:2023-11-29 02:03:02 25 4
gpt4 key购买 nike

我正在尝试为 child 和 parent 创建一个数据库。表格看起来像。

ChildTable : child-id(pk) | parent-id(fk) | name

ParentTable : parent-id(pk) | name

FOREIGN KEY ParentTable(parent-id) REFERENCES ChildTable(parent-id) ON DELETE CASCADE

问题:父表可以有多个子表,父表依赖于子表。如果 parent 有两个 child ,我们从 ChildTable 中删除一个 child 记录,它也会删除 parent ,而另一个 child 的 parent 记录必须存在,而另一个 child 的记录仍在数据库中.

是否有任何其他MySQL方法/约束可以满足上述要求。

提前致谢。

Update: I would like to explain my problem in detail.

我想对数据库应用以下规则:

  • 父表中的记录必须始终依赖于子表中的任何一个或两个记录。 (为此添加了 FK。)
  • 有可能 2 个 child 可以指向同一个 parentID
  • 如果我们删除一个具有 parentID(例如“abc”)的 child ,那么如果存在另一个具有相同 parentID 的 child ,则不得删除父 id。
  • 在删除具有相同 parentID('abc') 的第二个 child 时,现在必须删除它,因为没有具有 parentID('abc') 的 child 。

最佳答案

你的外键应该被反转:

FOREIGN KEY parent-id REFERENCES ParentTable(parent-id) ON DELETE CASCADE

您希望子表引用父表中的主键。小心使用级联删除:删除父行时,会自动删除其所有子行。

当您删除一个子行时,父行不会发生任何变化。

更新:您想要的只能使用触发器来完成。您需要在 ChildTable 上创建一个 AFTER DELETE 触发器,以检查是否可以删除 ParentTable 中的行。

关于mysql - 在删除级联交替,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11575197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com