mysql连接表时删除行

6ioyuze2  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(317)

我是数据库新手,对删除数据有疑问。我想从一个表中删除一行,而该表链接到另外两个不同的表。
见表格图片:



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

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

g2ieeal7

g2ieeal71#

外键是存储在一个表中的值,这些值最初来自另一个表。
尽管你的模式不见了,但我有种感觉是这样的:
city是顶级表,其id在supplier中引用。物料中引用了供应商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^;

相关问题