Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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
Php &引用;“关于删除级联”;有三张桌子。错误:无法添加或更新子行_Php_Mysql_Database - Fatal编程技术网

Php &引用;“关于删除级联”;有三张桌子。错误:无法添加或更新子行

Php &引用;“关于删除级联”;有三张桌子。错误:无法添加或更新子行,php,mysql,database,Php,Mysql,Database,我有这个桌子结构(三张桌子:图像,图像室,房间) 所有图像id和房间id都可以在图像室中找到 从图像表中删除图像时,我希望删除图像室中具有相同id的行。使用图像室中的外键可以正常工作 columns | reference Table | Foreign Columns | On Delete image_id | image | image_id | CASCADE columns | reference Table | Foreign Co

我有这个桌子结构(三张桌子:图像,图像室,房间)

所有图像id和房间id都可以在图像室中找到

从图像表中删除图像时,我希望删除图像室中具有相同id的行。使用图像室中的外键可以正常工作

columns   | reference Table  | Foreign Columns | On Delete
image_id  | image            | image_id        | CASCADE
columns   | reference Table  | Foreign Columns | On Delete
room_id   | room             | room_id         | CASCADE
删除房间时,我要删除image_room中具有匹配房间id的行,以及image table中与我从image_room中删除的id匹配的所有行

我在图像室中有一把外键,它可以从图像室中删除房间

columns   | reference Table  | Foreign Columns | On Delete
image_id  | image            | image_id        | CASCADE
columns   | reference Table  | Foreign Columns | On Delete
room_id   | room             | room_id         | CASCADE
当我删除房间时,如何从image_room中具有匹配image_id的image表中删除行?现在我猜我在图像表之前删除了图像室表中的行

我已在图像表中使用此外键进行了测试

columns   | reference Table  | Foreign Columns | On Delete
image_id  | image_room       | image_id        | CASCADE
并获取错误“如果外键约束失败,则无法添加或更新子行”

我能用删除级联解决这个问题吗?否则,我将使用PHP作为后端

删除房间时,我要删除image_room中具有匹配房间id的行,以及image table中与我从image_room中删除的id匹配的所有行。
[snip]
我能用删除级联解决这个问题吗

不,你不能。对于“image”表,删除从“image”到“image\u room”的级联。(从“image”中删除一行,dbms将删除“image_room”中引用该行的所有行。)不可能在另一个方向上级联删除

您必须通过在MySQL中编写触发器或在PHP中编写应用程序代码来更改设计或使用过程代码

如果图像名称是唯一的,则可以将图像名称存储在“image_room”中,而不是存储图像id号。完成此操作后,在确保正确更新数据后,可以删除表“image”,并让“room”的单个外键完成所有清理