更改数据库行的主键值

时间:2013-09-19 07:47:51

标签: sql sql-server ssms

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

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

感谢。

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

1 个答案:

答案 0 :(得分: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

然后删除您不想要的号码的行(更新任何FK参考号后)。

此处有更多详情:http://technet.microsoft.com/en-us/library/aa259221(v=sql.80).aspx


对于子孙后代,为了澄清下面评论中的问题,只有插入一个大于当前最大值的值时,自动增量值才会受到影响。

引用链接文章:

  

如果插入的值大于当前的标识值   在表中,SQL Server自动使用新插入的值作为   目前的身份价值。