gpt4 book ai didi

mysql 在连接表时删除行

转载 作者:行者123 更新时间:2023-11-29 17:46:39 25 4
gpt4 key购买 nike

我是数据库新手,有一个关于删除数据的问题。我想从一个表中删除一行,而该表链接到另外 2 个不同的表。

查看表格图片:

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`))

请任何人给我一些建议和帮助。

预先感谢/路易斯

最佳答案

外键是存储在一个表中但最初来自另一个表的值。

尽管您的架构丢失,但我有一种感觉,它看起来像这样:

城市是顶级表,其 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^;

关于mysql 在连接表时删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49761864/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com