首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于删除级联交替

关于删除级联交替
EN

Stack Overflow用户
提问于 2012-07-20 07:58:34
回答 1查看 2.3K关注 0票数 2

我正试图为孩子和家长创建一个数据库。桌子看起来像。

ChildTable:child-id(pk) x-id-id(Fk)\n.name ParentTable:父-id(Pk)\ name 外键ParentTable(父id)在删除级联上引用ChildTable(父-id)

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

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

提前谢谢。

更新:我想详细解释我的问题。

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

  • 父表中的记录必须始终依赖于子表中的任何一两条记录。(FK是为同样的加起来的。)
  • 有可能两个孩子可以指向同一个parentID
  • 如果我们删除一个具有parentID的子(例如'abc'),那么如果存在具有相同parentID的另一个子子,则不能删除父id。
  • 删除具有相同parentID('abc')的第二个子级时,必须删除它,因为没有带有parentID的子级(‘abc’)。
EN

回答 1

Stack Overflow用户

发布于 2012-07-20 08:01:23

您的外键应该反转:

代码语言:javascript
复制
FOREIGN KEY parent-id REFERENCES ParentTable(parent-id) ON DELETE CASCADE

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

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

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11575197

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档