首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在带有数据的表上添加外键禁忌

问在带有数据的表上添加外键禁忌
EN

Stack Overflow用户
提问于 2018-01-31 11:01:41
回答 3查看 45关注 0票数 2

我想知道是否有可能在已经有数据的表上添加外键禁忌。我有一张桌子供应商和一张桌子配料

当我尝试添加约束时,如下所示:

​

​

我得到了以下错误

代码语言:javascript
复制
MySQL said: Cannot add or update a child row: a foreign key constraint fails (`blackfisk_relations`.`#sql-223_37`, CONSTRAINT `ingredients_supplier_id_foreign` FOREIGN KEY (`supplier_id`) REFERENCES `suppliers` (`id`) ON DELETE CASCADE)

​

​

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-01-31 11:09:58

如果要向包含数据的表中添加约束,数据必须满足约束(或者如果数据不必满足约束,那么添加约束的意义是什么?)

你的选择:

  • 可以删除对不存在的外键的引用。
  • 您可以在外键表中添加这些键,以便确实存在引用。

(一些DBMS允许使用指定的NOCHECK添加约束,这意味着该约束将被添加,但不会应用于现有数据--只有新的数据和对现有数据的更改。我不知道MySql是否允许这样做- Server和Oracle。如果MySql这样做了,您可能不得不编写脚本,而不是使用GUI选项。)

票数 1
EN

Stack Overflow用户

发布于 2018-01-31 11:04:41

当然可以,只需确保引用表中存在外键的值,否则就必须创建所有缺失的值或将其值更改为null。

祝好运

票数 1
EN

Stack Overflow用户

发布于 2018-01-31 11:06:05

如果对要创建外键的表中的每个主键有记录,则可以尝试更改表。

错误显示表中有一条记录,该记录在其他表中不作为主键存在。这是在阻止你改变桌子。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48540557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档