2017-06-21 39 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'只允许插入显式标识 - 不更新它们。 –