我对使用此结构的表有疑问
ID Name Code
-------------------
2 Counter 1 1001
3 Counter 2 1002
4 Counter 3 1003
Id
是identity
列,是该表的主键。
现在我想进行更改并将ID转换为以下格式:
ID Name Code
--------------------
1 Counter 1 1001
2 Counter 2 1002
3 Counter 3 1003
用户数据非常重要,永远不会被更改
非常感谢
答案 0 :(得分:0)
我完全同意@Damien_The_Unbeliever。但是,如果您仍想转移值,请尝试以下脚本。
SET IDENTITY_INSERT tablename ON;
;WITH CTE AS
(
SELECT ROW_NUMBER() OVER(ORDER BY ID ASC) NewID
FROM TableName
)
UPDATE CTE
SET ID = NewID
SET IDENTITY_INSERT tablename OFF;
DECLARE @SeedValue INT = (SELECT COUNT(*) FROM TableName);
DBCC CHECKIDENT ("TableName", RESEED, @SeedValue);
GO
DBCC CHECKIDENT 会将IDENTITY种子值重置为总数。表中存在的行,因此下次当您插入新行时,它将为IDENTITY列生成下一个连续值。