嘿,我想要從我的IDENTITY COLUMN值開始填充1我知道如何使用DBCC CHECKIDENT執行此操作,但是,我想要替換所有現有行中的值。這張桌子有超過200萬行。如何重新編號/替換現有數據上的標識列
此任務的最佳方法是什麼?
嘿,我想要從我的IDENTITY COLUMN值開始填充1我知道如何使用DBCC CHECKIDENT執行此操作,但是,我想要替換所有現有行中的值。這張桌子有超過200萬行。如何重新編號/替換現有數據上的標識列
此任務的最佳方法是什麼?
您可以簡單地添加一個新的標識列la How to add a new identity column to a table in SQL Server?。只需刪除舊列並重新添加即可。當然,這將打破任何外鍵,但我認爲,因爲你正在重新編號我猜測沒有問題。
見這個例子如何替換值,但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行肯定需要時間
感謝您的建議 – jr3 2012-05-08 04:23:09
如果你有外鍵關係,我建議保留舊列,直到你可以用新的id值更新所有的子表。他們可以放棄它。 – HLGEM 2012-01-09 20:22:17
問題在於SQL Server不能在表中包含多個標識列:http://stackoverflow.com/questions/349092/can-a-sql-server-table-have-two-identity-columns。您需要首先從舊的身份屬性中刪除身份屬性。 – 2012-01-09 20:23:59
YE,這是真的,你需要刪除身份屬性。 – HLGEM 2012-01-09 20:24:29