2012-01-08 52 views
5

嘿,我想要從我的IDENTITY COLUMN值開始填充1我知道如何使用DBCC CHECKIDENT執行此操作,但是,我想要替換所有現有行中的值。這張桌子有超過200萬行。如何重新編號/替換現有數據上的標識列

此任務的最佳方法是什麼?

回答

6

您可以簡單地添加一個新的標識列la How to add a new identity column to a table in SQL Server?。只需刪除舊列並重新添加即可。當然,這將打破任何外鍵,但我認爲,因爲你正在重新編號我猜測沒有問題。

+2

如果你有外鍵關係,我建議保留舊列,直到你可以用新的id值更新所有的子表。他們可以放棄它。 – HLGEM 2012-01-09 20:22:17

+0

問題在於SQL Server不能在表中包含多個標識列:http://stackoverflow.com/questions/349092/can-a-sql-server-table-have-two-identity-columns。您需要首先從舊的身份屬性中刪除身份屬性。 – 2012-01-09 20:23:59

+1

YE,這是真的,你需要刪除身份屬性。 – HLGEM 2012-01-09 20:24:29

2

見這個例子如何替換值,但RESEED是另一回事:

CREATE TABLE t (id INT IDENTITY) 
GO 
INSERT t DEFAULT VALUES 
GO 25 

SET IDENTITY_INSERT t ON 

delete t 

OUTPUT DELETED.Id+100 INTO T(Id) 

SET IDENTITY_INSERT t Off 

SELECT * FROM t 

DROP TABLE t 

一個例子的補種

DBCC CHECKIDENT('YourTableName', 150, reseed) 

如果你有取代價值 - 用2M行肯定需要時間

+0

感謝您的建議 – jr3 2012-05-08 04:23:09

相關問題