エラーの解決方法を教えてくださいエラーの解決方法
メッセージ547、レベル16、状態0、行1
ALTER TABLEステートメントがFOREIGN KEY制約「MyForeignKeyName」と競合しました。データベース「MyDatabase」、テーブル「dbo.MyTable」、列「IMyColumn」で競合が発生しました。
外部キーを作成しようとしていて、子テーブルに親テーブルと一致しないデータがすでにある場合、このエラーメッセージが表示されます。
例:
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);
Job_Idに値が5であるMyChildテーブルの最後のレコードが5であることを確認します。これはMyParentテーブルにはありません。
次のような外部キー関係を作成しようとすると、
ALTER TABLE MyChild
ADD CONSTRAINT fk_My_foreignKey FOREIGN KEY(Job_Id)REFERENCES MyParent(Job_Id);
表示されるエラーメッセージ:
メッセージ547、レベル16、状態0、行1 ALTER TABLEステートメントがFOREIGN KEY制約 "fk_My_foreignKey"と競合しました。データベース "mydatabase"、テーブル "dbo.MyParent"、列 'Job_id'で競合が発生しました。