更改数据库行的主键值

abe*_*nci 14 sql sql-server ssms

我正在使用SQL Server Management Studio,我想更改表行的自动增量主键值,具有不同的值.打开表进行编辑后,SQL Server Management Studio显示此字段对所有行都显示为灰色.

可能吗?我想使用我们错误删除的行的编号,因此它是有效的(与其他主键值没有冲突) - 最重要的是 - DB中添加的下一行应该具有完整的自动递增值.

谢谢.

编辑:丢失与此PK上的其他表记录的链接不是此行的问题.我们可以手动恢复它.

Pad*_*ddy 20

不一定建议但是,请插入要更改数字的行的副本,但要使用您需要的ID:

SET IDENTITY_INSERT aTable ON
GO

-- Attempt to insert an explicit ID value of 3
INSERT INTO aTable (id, product) VALUES(3, 'blah')       
GO

SET IDENTITY_INSERT aTable OFF
GO
Run Code Online (Sandbox Code Playgroud)

然后删除您不想要的数字行(更新任何FK引用后).

更多细节请访问:http://technet.microsoft.com/en-us/library/aa259221(v = sql.80).aspx


对于后代,为了澄清下面注释中的问题,只有插入大于当前最大值的值时,才会影响自动增量值.

引用链接文章:

如果插入的值大于表的当前标识值,则SQL Server会自动使用新插入的值作为当前标识值.