我正在使用SQL Server Management Studio,我想更改表行的自动增量主键值,具有不同的值。打开表进行编辑后,SQL Server Management Studio显示此字段对所有行都显示为灰色。
有可能吗?我想使用我们错误删除的行的编号,因此它是有效的(与其他主键值没有冲突) - 最重要的是 - DB中添加的下一行应该具有完整的自动递增值。
感谢。
编辑:丢失与此PK上的其他表记录的链接不是此行的问题。我们可以手动恢复它。
答案 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自动使用新插入的值作为 目前的身份价值。