如何解决错误 Msg 547, Level 16, State 0, Line 1

roh*_*han 6 foreign-key sql-server sql-server-2008-r2

请建议我如何解决错误 如何解决错误

消息 547,级别 16,状态 0,第 1 行
ALTER TABLE 语句与 FOREIGN KEY 约束“MyForeignKeyName”冲突。冲突发生在数据库“MyDatabase”、表“dbo.MyTable”、“IMyColumn”列中。

JP *_*han 10

如果您尝试制作外键并且您的子表已经有一些与您的父表不匹配的数据,您将收到此错误消息。

例如:

CREATE TABLE MyParent(Job_id int PRIMARY KEY,Job_Name Varchar(50));

INSERT INTO MyParent Values(1,'CEO');
INSERT INTO MyParent Values(2,'Business Manager');
INSERT INTO MyParent Values(3,'DBA');

CREATE TABLE MyChild(Emp_id int,Emp_Name Varchar(50),Job_Id int)

INSERT INTO MyChild Values(1,'Lavanya',1);
INSERT INTO MyChild Values(1,'JP Chauhan',3);
INSERT INTO MyChild Values(1,'Rakesh',5);
Run Code Online (Sandbox Code Playgroud)

查看 MyChild 表中 Job_Id 值为 5 的最后一条记录,该记录不在 MyParent 表中。

如果您尝试制作外键关系,例如:

ALTER TABLE MyChild
ADD CONSTRAINT fk_My_foreignKey FOREIGN KEY(Job_Id)REFERENCES MyParent(Job_Id);
Run Code Online (Sandbox Code Playgroud)

你会得到的错误信息:

消息 547,级别 16,状态 0,第 1 行 ALTER TABLE 语句与 FOREIGN KEY 约束“fk_My_foreignKey”冲突。冲突发生在数据库“mydatabase”、表“dbo.MyParent”、“Job_id”列中。