2017-05-19 64 views
0

私はテーブルにFOREIGNKEYを追加しようとしていますし、私はこのエラーを取得することはできませんので:は、外部キーを作成することはできません

Msg 547, Level 16, State 0, Line 1 The ALTER TABLE statement conflicted with the FOREIGN KEY constraint "FK_RDATA_COMBO_VALUES_ID_REFERENCES". The conflict occurred in database "MyDatabase", table "dbo.EVA_REFERENCES", column 'ID_REFERENCES'.

エラーメッセージは、問題があることを言いますFK_RDATA_COMBO_VALUES_ID_REFERENCESと競合しますが、これは作成しようとしているFKの名前ですが、まだ存在しません。

は、これが私のテーブルです:

CREATE TABLE [dbo].[RDATA_COMBO_VALUES](
    [ID_RDATA_COMBO] [int] IDENTITY(1,1) NOT NULL, 
    [ID_REF_CDATA] [int] NOT NULL, 
    [ID_MODULE_REC_ID] [int] NOT NULL, 
    [VALUE] [nvarchar](max) NULL, 
    [ID_REFERENCES] [int] NOT NULL, 
CONSTRAINT [PK_RDATA_COMBO_VALUES] PRIMARY KEY CLUSTERED 
(
    [ID_RDATA_COMBO] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] 

GO 

ALTER TABLE [dbo].[RDATA_COMBO_VALUES] WITH CHECK ADD CONSTRAINT [FK_RDATA_COMBO_VALUES_ID_REF_CDATA] FOREIGN KEY([ID_REF_CDATA]) 
REFERENCES [dbo].[EVA_REFERENCE_CDATA] ([ID_REF_CDATA]) 
GO 

ALTER TABLE [dbo].[RDATA_COMBO_VALUES] CHECK CONSTRAINT [FK_RDATA_COMBO_VALUES_ID_REF_CDATA] 
GO 

そして、これは私がFKを作成するために使用するコマンドです:ALTER TABLE文がFK私と競合しているのはなぜ

ALTER TABLE [dbo].[RDATA_COMBO_VALUES] WITH CHECK ADD CONSTRAINT [FK_RDATA_COMBO_VALUES_ID_REFERENCES] FOREIGN KEY([ID_REFERENCES]) 
REFERENCES [dbo].[EVA_REFERENCES] ([ID_REFERENCES]) 

がまだ作成されていませんか?

更新: この質問は、この表に関する質問を全部寄せたthis oneに続きます。

+4

「この外来キー制約に準拠しない既存のデータがテーブルに存在します」というのは、長年にわたり言われています。 –

+0

はい、これが理由です。私はなぜメッセージがより有益ではないのだろうかと思います。 dbaのためのcouseのこれは明らかですが、私は毎日インデックスやキーを作成しません。 THANKS – LaBracca

+0

[dbo]。[EVA_REFERENCE_CDATA]([ID_REF_CDATA])このテーブルは列ID_REF_CDATAにプライマリキーを持っていますか –

答えて

1

メッセージは誤解を招く可能性がありますが、参照するテーブルに存在しない値がフィールドに含まれているため、追加しようとしているFKがデータと競合しています。

FKを作成する前に、孤児を削除する必要があります。

関連する問題