2016-08-04 5 views
0

次の制約定義を持つ表があります。行を更新し、主キー制約の原因となる行を無視しますか?

CONSTRAINT [PK_TempItemTable_1] PRIMARY KEY CLUSTERED 
(
    [A] ASC, 
    [B] ASC, 
    [D] ASC, 
    [D] ASC, 
    [E] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 

列Dを値(約9000 +行)で更新しようとしています。更新値により、Dに更新したい値があるため、制約エラーが発生します。

PRIMARY KEY制約 'PK_TempItemTable_1'に違反しています。オブジェクト 'dbo.TempItemTable'に重複キーを挿入できません。

他のすべての行を更新してこのプライマリキーの制約を引き起こすMS SQL文を無視する方法はありますか?

おかげ

+1

あなたが試したコードを投稿できますか?基本的には、PK値が既に存在する更新ステートメントから行を除外する必要があります – Beth

答えて

0

つのオプション... IGNORE_DUP_KEY = ON

1.Create制約し、後で戻って、重複して設定された制約を削除します。

2.Primary keyはAからEまでの列の組み合わせです。チェックするだけで、dのチェックがどのように役立つかわかりませんが、サンプルのスキーマを知ることで、これは存在するすべての値を除外しますあなたが更新しようとしているテーブル

update mt 
set d=dup.d 
from 
maintable t 
join 
ninetythousandtable dup 
on dup.d<>t.d 
関連する問題