2016-08-04 36 views
0

我有一個表格,下面的約束定義。我試圖用值(大約9000加上行)更新列D;我試圖更新D列值(約9000加上行)。由於更新值,約束錯誤到達,因爲某些值我想更新到D.更新行並忽略導致主鍵約束的行?

違反PRIMARY KEY約束'PK_TempItemTable_1'。無法在對象'dbo.TempItemTable'中插入重複鍵。

有沒有辦法讓我編寫MS SQL語句,讓我更新所有其他行並忽略導致此主鍵約束的行?

感謝

+1

你可以發佈你試過的代碼不起作用嗎?基本上,你需要排除你的更新語句中PK值已經存在的行 – Beth

回答

0

兩個選項..

IGNORE_DUP_KEY = ON 1,創建約束,之後再刪除重複項,並設置約束回來。

2.主鍵是從A到E的列的組合,檢查,所以不知道如何檢查只有d會有所幫助,但無法知道樣本模式,我可以說,這將排除所有存在於表你要更新

update mt 
set d=dup.d 
from 
maintable t 
join 
ninetythousandtable dup 
on dup.d<>t.d