【发布时间】:2018-09-20 13:25:14
【问题描述】:
我是数据库新手,对删除数据有疑问。 我想从一个表中删除一行,而该表链接到另外 2 个不同的表。
看桌子的图片:
我试过这段代码,但它给了我一个错误:
delete jbsupplier,jbitem
from jbitem
inner join jbsupplier
inner join jbcity
where jbitem.supplier=jbsupplier.id
and jbsupplier.city=jbcity.id;
ERROR 1451 (23000): Cannot delete or update a parent row: a foreign key constraint fails (`louhj600`.`jbitem`, CONSTRAINT `fk_item_supplier` FOREIGN KEY (`supplier`) REFERENCES `jbsupplier` (`id`))
谁能给我一些建议和帮助,拜托。
提前致谢/路易丝
【问题讨论】:
-
编辑您的问题并添加包括索引的表的架构。仅供参考,不要发布数据/代码的图像。尝试为您创建答案时无法复制/粘贴。
-
您需要先从子表中删除行,然后再上到父表。
-
您是否要删除所有供应商及其产品?
-
先从子表中删除行,然后是父表。此外,删除查询的语法是错误的。它应该是这种形式- DELETE FROM jbitem WHERE dept = 1 ;
-
我很抱歉,但我不知道如何添加表格,以便您可以查看它们并从中复制。但问题是“从表 jbsupplier 中删除洛杉矶的所有供应商。这将不能立即工作(您将收到错误代码 23000),您必须通过删除一些其他相关元组来解决。但是,不要从其他表中删除不必要的元组,也不要更改表的结构,即不要删除外键。另外,请记住,您只能在查询中使用“Los Angeles”作为常量,而不是“199”或“900”。