【发布时间】:2025-12-13 02:20:03
【问题描述】:
从表中删除重复记录后, 我想用从 1 开始的连续编号更新表的标识列。这是我的表详细信息
id(identity(1,1)),
EmployeeID(int),
Punch_Time(datetime),
Deviceid(int)
我需要通过存储过程执行此操作。 当我在存储过程中尝试以下语句时
DECLARE @myVar int
SET @myVar = 0
set identity_insert TempTrans_Raw# ON
UPDATE TempTrans_Raw# SET @myvar = Id = @myVar + 1
set identity_insert TempTrans_Raw# off
出现错误,例如...无法更新身份列“Id” 请任何人建议如何使用从 1 开始的连续编号来更新该表的标识列。
【问题讨论】:
-
身份从未被用作序列号,并且永远无法保证连续性。如果您确实需要序列号,请尝试添加另一列并填充它
-
@Raj : 除了新库还有其他解决方案吗?
-
您可以删除并重新创建列,但如果您不关心内容,为什么需要该列?
-
你的更新语句如下 SET IDENTITY_INSERT tablename ON UPDATE STATEMENT SET IDENTITY_INSERT tablename OFF
标签: sql sql-server sql-server-2008 stored-procedures