如何在SQL 2008中替换表列中的IDENTITY ID?

23 浏览
0 Comments

如何在SQL 2008中替换表列中的IDENTITY ID?

我不小心从表中删除了记录。这个记录有一个关键列,与数据库中的其他表相关联。我已经恢复了数据库,并且可以访问我之前删除的记录。当我尝试使用INSERT SELECT方法时,我收到了消息 '只有在使用列列表且IDENTITY_INSERT为ON时,才能为表 'IEP.dbo.IEP' 中的标识列指定显式值。' 然后我在所有列上运行了插入操作,但是在我表设计中将标识设置为YES的第一列除外。现在我想知道是否有任何方法可以更新这个关键字?新记录会自动生成新的关键字,我想将该值更新为旧的关键字。以下是示例:

旧/当前表:

i_key
1002491

临时/备份表:

i_key
975217

更新当前列i_key值与临时列i_key值的最佳解决方案是什么?如果有人可以帮助,请告诉我。谢谢!

0
0 Comments

在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只允许插入显式身份标识,而不允许更新它们。

0
0 Comments

问题出现的原因:在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,是不可能的。因此,更好的方法是删除具有无效键的记录,并使用所需的键进行插入。

一个用户表示这个解决方法对他有用,他只是删除了先前插入的记录。

0