我想知道是否可以在已有数据的表上添加外键约束。我有一张桌子供应商和一张桌子成分
当我尝试按如下方式添加约束时:
我收到以下错误
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)
答案 0 :(得分:1)
当然可以,只需确保引用表上存在外键的值,否则您将必须创建所有缺失值或将其值更改为null
祝你好运答案 1 :(得分:1)
如果要为包含数据的表添加约束,数据必须满足约束(或者如果数据不必满足约束,那么添加约束的点是什么?)
您的选择:
(有些DBMS允许在指定NOCHECK的情况下添加约束,这意味着将添加约束,但不会将其应用于现有数据 - 仅新数据和现有数据的更改。我不会这样做。知道MySql是否允许这样做 - SQL Server和Oracle。如果是MySql,你可能需要编写脚本,而不是使用GUI选项。)
答案 2 :(得分:0)
如果您对要创建外键的表中的每个主键都有记录,那么您可以尝试更改表。
您的错误显示您在表中有一条记录,该记录在其他表中不作为主键存在。这会阻止您更改表格。