如何在SQL 2008中替换表列中的IDENTITY ID?
如何在SQL 2008中替换表列中的IDENTITY ID?
我不小心从表中删除了记录。这个记录有一个关键列,与数据库中的其他表相关联。我已经恢复了数据库,并且可以访问我之前删除的记录。当我尝试使用INSERT SELECT方法时,我收到了消息 '只有在使用列列表且IDENTITY_INSERT为ON时,才能为表 'IEP.dbo.IEP' 中的标识列指定显式值。'
然后我在所有列上运行了插入操作,但是在我表设计中将标识设置为YES的第一列除外。现在我想知道是否有任何方法可以更新这个关键字?新记录会自动生成新的关键字,我想将该值更新为旧的关键字。以下是示例:
旧/当前表:
i_key 1002491
临时/备份表:
i_key 975217
更新当前列i_key值与临时列i_key值的最佳解决方案是什么?如果有人可以帮助,请告诉我。谢谢!
在SQL Server 2008中,如果要替换表列中的IDENTITY ID,需要先将IDENTITY_INSERT选项打开,然后进行更新操作,最后再将IDENTITY_INSERT选项关闭。
解决方法如下:
1. 打开IDENTITY_INSERT选项:
SET IDENTITY_INSERT Table1 ON
2. 进行更新操作:
UPDATE [dbo].[Table1] SET [TrackingNumber2]=[TrackingNumber]
3. 关闭IDENTITY_INSERT选项:
SET IDENTITY_INSERT Table1 OFF
注意,SET IDENTITY_INSERT
只允许插入显式身份标识,而不允许更新它们。
问题出现的原因:在SQL 2008中,想要替换表列中的IDENTITY ID。IDENTITY ID是自动递增的,不可修改。因此,需要找到一种方法来替换它。
解决方法:可以通过首先发出一个identity insert语句来实现。然后按照以下步骤进行操作:
1. 打开identity insert:SET IDENTITY_INSERT [tablename] ON
2. 进行插入操作
3. 关闭identity insert:SET IDENTITY_INSERT [tablename] OFF
需要注意的是,一次只能有一个表可以打开identity insert。
如果想要更新id,是不可能的。因此,更好的方法是删除具有无效键的记录,并使用所需的键进行插入。
一个用户表示这个解决方法对他有用,他只是删除了先前插入的记录。