1

我们如何在 SQL Server 的自动生成列中重新生成顺序用户 ID?

我有一个数据库,其中Emp_id是一个自动生成的列。我已经删除了这么多数据,以便Emp_id以非序列顺序出现,即

12
14
21
22
23
56...

所以现在我想Emp_id重新编号并变成一个序列,即

1
2
3
4
5
6.....
4

1 回答 1

0

当该列INT IDENTITY在 SQL Server 中时,您无法更新表中包含的值。

如果这些值已通过其他方式“自动生成”,那么您可以执行以下操作:

;WITH RegeneratedValues AS
(
   SELECT 
      Emp_ID,
      NewID = ROW_NUMBER() OVER (ORDER BY Emp_ID)
   FROM
      dbo.YourTable
)
UPDATE dbo.YourTable
SET Emp_ID = regen.NewID
FROM RegeneratedValues regen
WHERE dbo.YourTable.Emp_ID = regen.Emp_ID

CTE(公用表表达式)选择“旧”值并使用排序函数按该列Emp_ID生成新的连续数字。然后,该语句采用这两个值并根据这些值更新您的表 - 将新的、重新生成的、连续的、无间隙的数字分配给Emp_IDROW_NUMBER()UPDATEEmp_ID

于 2012-04-18T06:06:20.893 回答