0
我的經理詢問我向列表UserTracking
添加了一個AutoID
列,以便所有現有的條目都可以填充一個值,並且與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
。
我不完全確定如何自己做,我不想搞砸了。有人可以幫忙嗎?
謝謝M.Ali!現在看來很明顯,你指出了這一點。 – Will
請注意,現有行的ID不一定與CreateDate相關。如果您需要使用新的標識列進行回填,則需要使用'SELECT INTO ... ORDER BY CreateDate'。 –