gpt4 book ai didi

MySQL:更改表以设置外键

转载 作者:行者123 更新时间:2023-11-29 00:02:59 24 4
gpt4 key购买 nike

虽然关于这个主题有一些类似的问题,但我找不到适合我的问题的正确答案。我有 2 个名为 customercar 的表。我想要做的是:当我从数据库中删除一个客户时,我希望属于该客户的汽车也将被自动删除。 MySQL Workbench 为我生成的代码是这样的:

ALTER TABLE `autocare`.`car` 
ADD CONSTRAINT `customerId`
FOREIGN KEY (`CUSTOMER_ID`)
REFERENCES `autocare`.`customer` (`ID`)
ON DELETE CASCADE
ON UPDATE RESTRICT;

我得到这个错误:

ERROR 1452: Cannot add or update a child row: a foreign key constraint fails
(`autocare`.`#sql-80c_388`, CONSTRAINT `customerId` FOREIGN KEY (`CUSTOMER_ID`)
REFERENCES `customer` (`ID`) ON DELETE CASCADE)

之前这些表之间没有任何关系。有任何想法吗?提前致谢!

最佳答案

您的最终目标是实现从customercar 的级联删除。当您尝试按现在的样子向表添加约束时,它会失败,因为 car 表必须包含具有 CUSTOMER_ID 值的行,而该值当前在父级中不存在客户表。

您应该首先找到那些孤立的行并删除它们(因为您的目标是无论如何都要删除它们)。您可以通过如下查询找到它们:

SELECT *
FROM car
WHERE
CUSTOMER_ID NOT IN (SELECT ID FROM customer)

删除孤立记录后,剩余的现有行可以满足外键约束,您的 ALTER TABLE 语句将成功。

关于MySQL:更改表以设置外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28859465/

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