SQL Server:如何添加新的标识列并使用ID填充列?

时间:2012-02-23 14:20:56

标签: sql sql-server cursor primary-key

我有一张包含大量数据的表格。我想添加额外的列id并将其用作主键。使用从1row count

的值填充此列的更好方法是什么?

目前我正在使用游标并逐个更新行。这需要几个小时。有没有办法更快地做到这一点?

谢谢

2 个答案:

答案 0 :(得分:112)

就这样做:

ALTER TABLE dbo.YourTable
ADD ID INT IDENTITY(1,1)

并且将创建列并自动填充integer值(正如Aaron Bertrand在他的评论中指出的那样 - 您无法控制哪一行获得什么值 - SQL Server在其上处理该值拥有,你不能影响它。但所有行都将获得有效的int值 - 不会有任何NULL或重复值。

接下来,将其设置为主键:

ALTER TABLE dbo.YourTable
ADD CONSTRAINT PK_YourTable PRIMARY KEY(ID)

答案 1 :(得分:1)

如果要按特定顺序添加行号,可以将ROW_NUMBER()放入新表中,然后删除原始表。但是,根据表的大小和其他业务限制,您可能不想这样做。这也意味着存在一种逻辑,您可以根据该逻辑对表进行排序。

SELECT ROW_NUMBER() OVER (ORDER BY COL1, COL2, COL3, ETC.) AS ID, *
INTO NEW_TABLE
FROM ORIGINAL_TABLE