Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 关于删除级联替换_Mysql_Sql_Phpmyadmin - Fatal编程技术网

Mysql 关于删除级联替换

Mysql 关于删除级联替换,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我正在尝试为孩子和家长创建一个数据库。桌子看起来像 子表:子id(pk)|父id(fk)|名称 父表:父id(主键)|名称 外键ParentTable(父id)在删除级联时引用子表(父id) 问题:父表可以有多个子表,并且父表依赖于子表。如果一个父项有两个子项,并且我们从ChildTable中删除一个子项记录,那么它也会删除父项,而另一个记录仍在数据库中的子项必须存在父项记录 是否有其他MySQL方法/约束可以满足上述要求 提前谢谢 更新:我想详细解释我的问题 我想对数据库应用以下规则: 父表

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

子表:子id(pk)|父id(fk)|名称

父表:父id(主键)|名称

外键ParentTable(父id)在删除级联时引用子表(父id)

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

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

提前谢谢

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

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

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

您的外键应反转:

FOREIGN KEY parent-id REFERENCES ParentTable(parent-id) ON DELETE CASCADE
您希望子表引用父表中的主键。但要注意级联删除:删除父行时,会自动删除其所有子行

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


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

我尝试了您的解决方案,但phpMyAdmin给出了错误。。另外,我希望父表在子表上是可靠的,如果我们反转外键,它将改变依赖关系,而我只想在没有子表时删除父记录。我更新了我的问题,没有更多细节。希望这能解释我的问题。我也搜索了MYSQL手册,但没有找到任何类似的内容。