表的AutoID列

时间:2015-04-19 21:55:33

标签: sql sql-server

我的经理要求我向表AutoID添加UserTracking列,以便可以使用值填充所有现有条目,并且此列的顺序与CreateDate字段(即ID 1)位于最早的条目中。

我这样做了:

alter table dbo.UserTracking add  AutoID bigint NULL
go

update dbo.UserTracking
set AutoId=AutoId.AutoId
from dbo.UserTracking as ut
join 
    (
      select  CreateDate,row_number() over (order by CreateDate) as AutoId
      from UserTracking
    ) as AutoId
on ut.CreateDate=AutoId.CreateDate
go

create index IDX__UserTracking__AutoId on dbo.UserTracking (AutoId)  
go

但我被告知我们需要AutoID列为实际自动ID(因此它在记录插入时具有自动新值)并且应该将其称为ID与其他表格一致。

从性能的角度来看,如果新的ID (INT)列是我们的主键,那将是完美的,但它可能很难做到。现在我们需要带有索引的自动ID

我不完全确定如何自己做,我也不想搞砸它。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:3)

删除现有列(AutoID),不能使现有列成为Identity列。

只需添加另一列并将其设为Identity列。

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

它将填充列本身,您不必做任何事情。