2013-10-25 43 views
2

我已經插入了幾行到一個表中,使用帶有唯一鍵約束的列(theId)中的重複項。我通過將IDENTITY_INSERT設置爲off來完成此操作。如何使用唯一鍵約束更新列?

我想同樣的技術更新,因爲我需要改變那些受騙者值,但它不工作:

SET IDENTITY_INSERT mytable OFF 
update mytable set 
theId = 5 
WHERE mytableId in (40, 41) 
SET IDENTITY_INSERT mytable ON 

錯誤: UNIQUE KEY約束「XI_mytale_mytableId_othercolumn_U」的相關規定。無法在對象'dbo.mytable'中插入重複鍵。

任何想法如何使用UPDATE做到這一點?

+0

請解釋一下你做了什麼,更要看一遍。前兩句話描述了一些不可能的事情。 – OzrenTkalcecKrznaric

+0

SET IDENTITY_INSERT mytable ON;將允許您手動添加標識列中的值,即自動增加列。它與唯一約束無關 –

回答

2

我認爲你在設置SET IDENTITY_INSERT mytable ON之後手動添加值的標識列令人困惑;使用唯一約束列定義它。具有唯一約束的列永遠不會允許您添加重複值。
如果您確實希望能夠在具有唯一約束的列中添加重複值,那麼您可以簡單地刪除唯一約束,因爲當您沒有唯一值時爲什麼會有唯一約束。
您可以使用下面的語句droo唯一約束,

ALTER TABLE TableName 
DROP CONSTRAINT uc_ConstraintName 
+0

再次查看後,您是正確的。有一個複合關鍵參與。 – 4thSpace