我正在使用 SQL Server Management Studio,我想使用不同的值更改表行的自动增量主键值。当然,打开表进行编辑后,SQL Server Management Studio 会将所有行的该字段显示为灰色。
这可能吗?我想使用我们错误删除的行号,因此它是有效的(与其他主键值没有冲突)并且 - 最重要的是 - 在数据库中添加的下一行应该具有完整的自动递增值。
谢谢。
编辑:丢失与此 PK 上其他表记录的链接对于该行来说不是问题。我们可以手动恢复。
最佳答案
不一定推荐,但请在要更改数字的行中插入一个副本,但要包含所需的 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
<小时/>为了方便后代,为了澄清下面评论中的问题,只有当您插入大于当前最大值的值时,自动增量值才会受到影响。
引用链接文章:
If the value inserted is larger than the current identity value for the table, SQL Server automatically uses the new inserted value as the current identity value.
关于sql - 更改数据库行的主键值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18888973/