2017-06-21 36 views
0

我不小心從表中刪除了我的記錄。該記錄具有與數據庫中的其他表相關聯的關鍵列。我已恢復數據庫,並且可以訪問先前已刪除的記錄。當我嘗試使用INSERT SELECT方法時,我收到消息'An explicit value for the identity column in table 'IEP.dbo.IEP' can only be specified when a column list is used and IDENTITY_INSERT is ON.'然後,我在所有列上運行插入,但是這個第一列的標識設置爲在我的表設計中是YES。現在我想知道有什麼方法可以更新密鑰嗎?新記錄自動生成新密鑰,我想將該值更新爲舊密鑰。下面是例子:如何替換表列SQL 2008中的IDENTITY ID?

舊/電流表:

i_key 
1002491 

臨時/備份表:

i_key 
975217 

什麼是最好的解決方案與臨時列i_key值來更新當前列i_key值?如果有人能幫助請讓我知道。謝謝!

回答

2

可以通過先發出身份INSERT語句,因爲這做到這一點:

SET IDENTITY_INSERT [tablename] ON 
go 

(do insert) 
go 

SET IDENTITY_INSERT [tablename] Off 
go 

請務必將其關閉之後,因爲只有一個表可以有身份的一次插入上。

+0

抱歉,我沒你想更新的ID。這是你不能做的,我不相信,所以你最好用無效鍵刪除記錄,並添加你想要的鍵。 – MikeS

+0

該解決方案適用於我。我剛剛刪除了以前插入的記錄。謝謝! –

-1

您需要在更新前關閉IDENTITY_INSERT選項上,像這樣:

SET IDENTITY_INSERT Table1 ON 
UPDATE [dbo].[Table1] 
    SET [TrackingNumber2]=[TrackingNumber] 
SET IDENTITY_INSERT Table1 OFF 
+2

'SET IDENTITY_INSERT'只允許插入顯式標識 - 不更新它們。 –