3

多くの行があるテーブルがあります。これら2つのテーブルの間に外部キーを作成したいのですが、次のエラーが発生します。

'CMEvent'テーブルが正常に保存されました。
'BaseEvent'テーブル
リレーションシップ'FK_CMEvent_Oid'を作成できません。
ALTERTABLEステートメントがFOREIGNKEY制約「FK_CMEvent_Oid」と競合しました。データベース「CMO_RestoredData」、テーブル「dbo.BaseEvent」、列「Oid」で競合が発生しました。

4

1 に答える 1

0

BaseEvent に存在しない CMEvent テーブルに行がある場合、このエラーを再現できました。

このクエリを実行してみてください:

SELECT * 
FROM CMEvent c
WHERE NOT EXISTS (
  SELECT * 
  FROM BaseEvent
  WHERE oid = c.oid ) 

行が返された場合は、外部キー制約を適用する前にこれらを削除する必要があります。

これらの孤立した行を保持する必要がある場合は、WITH NOCHECKを使用して、制約を新しい行にのみ適用できます。

于 2012-12-23T04:32:39.190 に答える