SQL Server将自动增量主键添加到现有表

作为标题,我有一个现有的表已经填充了150000条记录。 我添加了一个Id列(当前为空)。

我假设我可以运行一个查询来用增量数填充此列,然后设置为主键并打开自动增量。 这是继续进行的正确方法吗? 如果是这样,我如何填写最初的数字?


否 - 你必须以相反的方式来做:将它作为INT IDENTITY正确添加 - 当你这样做时它将被填充身份值:

ALTER TABLE dbo.YourTable
   ADD ID INT IDENTITY

然后你可以把它作为主键:

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

或者如果你喜欢一步到位:

ALTER TABLE dbo.YourTable
   ADD ID INT IDENTITY
       CONSTRAINT PK_YourTable PRIMARY KEY CLUSTERED

你不能“打开”IDENTITY:这是一个表重建。

如果您不关心数字顺序,那么您应该一次添加带有IDENTITY的列NOT NULL。 150k行不是很多。

如果您需要保留一些号码顺序,请相应地添加号码。 然后使用SSMS表设计器设置IDENTITY属性。 这使您可以生成一个脚本,它将为您执行列删除/添加/保留编号/重新编号。


我遇到了这个问题,但无法使用标识列(出于各种原因)。 我解决了这个问题:

DECLARE @id INT
SET @id = 0 
UPDATE table SET @id = id = @id + 1 

从这里借用。

链接地址: http://www.djcxy.com/p/94429.html

上一篇: SQL Server add auto increment primary key to existing table

下一篇: Adding an identity to an existing column