mysql在连接表

时间:2018-04-10 19:52:03

标签: mysql sql database join

我是数据库新手,对删除数据有疑问。 我想从一个表中删除一行,而该表链接到另外两个表。

见表格图片:

JBCITY

jbsupplier

jbitem

我尝试了这段代码,但它给了我一个错误:

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

1 个答案:

答案 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^;