我正在尝试为子级和父级创建数据库。表格看起来像。
ChildTable : child-id (pk)| parent-id (fk)| 名称
ParentTable : parent-id (pk)| 名称
FOREIGN KEY ParentTable(parent-id)REFERENCES ChildTable(parent-id)ON DELETE CASCADE
问题:父级可以有多个子级,父级表依赖于子级表。如果父母有两个孩子,我们从 ChildTable 中删除一个子记录,那么它也会删除父记录,而父记录必须存在于另一个记录仍在数据库中的子记录中
是否有任何其他MySQL方法/约束可以满足上述要求。
提前致谢。
更新:我想详细解释一下我的问题。
我想将以下规则应用于数据库:
答案 0 :(得分:3)
你的外键应该颠倒过来:
FOREIGN KEY parent-id REFERENCES ParentTable(parent-id) ON DELETE CASCADE
您希望子表引用父表中的主键。使用级联删除时要小心:删除父行时,会自动删除其所有子行。
当您删除一个子行时,父行没有任何反应。
更新:您只能使用触发器完成所需的操作。您需要在AFTER DELETE
上创建ChildTable
触发器,检查是否可以删除ParentTable
中的行。