我是数据库新手,对删除数据有疑问。 我想从一个表中删除一行,而该表链接到另外两个表。
见表格图片:
我尝试了这段代码,但它给了我一个错误:
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`))
请有人给我一些建议和帮助。
提前感谢/ Louise
答案 0 :(得分:0)
外键是存储在一个表中的值,这些表最初来自另一个表。
即使您的架构缺失,我也觉得它看起来像这样:
City是顶级表,其中ID在供应商中引用。 供应商ID在项目中引用。
因此,为了从亚特兰大说删除供应商。您需要先删除所有来自亚特兰大供应商的商品。然后删除供应商。
使用2个查询最容易完成。
delete i.* from jbitem i join jbsupplier s on i.supplier = s.id join jbcity c on s.city = c.id WHERE c.id = ^ID of Atlanta^;
delete s.* from jbsupplier s join jbcity on jbsupplier.city = jbcity.id where c.id = ^ID of Atlanta^;