今天需要給有500萬條數據的表添加主鍵和自增長列,其中最大的難度在於如何UPDATE這500萬多條數據,開始吧!
1.先給表添加一個字段叫ID,並允許空

2.查詢表,我想到了使用其中的時間列排序來創建表的序號來生成我們想要的自增列ID。
--其中查詢出來的字段將作為我UPDATE時的匹配條件 SELECT row_number() over(order by InsertTime asc) as num,UserID cUserID,Score cScore,InsertTime cInsertTime,InoutIndex cInoutIndex,ChairID cChairID FROM [RecordDrawScore] ) c

序號已經自動生成了,下一步update到我們的表
--其中我優化下把查詢到的結果放到臨時表#Temp
3.update這些數據
UPDATE [RecordDrawScore] SET ID = c.num FROM #Temp c WHERE UserID=c.cUserID AND InsertTime = c.cInsertTime AND Score = c.cScore AND InoutIndex =c.cInoutIndex AND ChairID=cChairID
4.檢查我們update的效果如何
SELECT id FROM [dbo].[RecordDrawScore] GROUP BY id HAVING COUNT(id)>1

我們添加的id沒有重復的,就代表成功了!
5.將表中的id設置為主鍵並添加自增長


6.新增一條記錄試試
如果一切操作順利,那么會有一個新的id
注意要是在UPDATE表時,要停掉INSERT操作!不然會有新的列沒有ID,就無法繼續設置為自增長列!
