是否有可能強制IDENTITY列重新計算其種子屬性,當其達到指定數據類型的最大值時,填充ID中的空位。列中的循環IDENTITY編號
讓我們這樣說吧,我有一列TINYINT
數據類型,它可以保存最大值爲255的數據。當列填充數據到最大ID可能時,我從中間刪除一行,比如說ID = 100
。
問題是,我可以強制IDENTITY
在最後填寫缺少的ID嗎?
是否有可能強制IDENTITY列重新計算其種子屬性,當其達到指定數據類型的最大值時,填充ID中的空位。列中的循環IDENTITY編號
讓我們這樣說吧,我有一列TINYINT
數據類型,它可以保存最大值爲255的數據。當列填充數據到最大ID可能時,我從中間刪除一行,比如說ID = 100
。
問題是,我可以強制IDENTITY
在最後填寫缺少的ID嗎?
您可以補種IDENTITY
(設置新的種子),但它會不是能夠神奇地找到缺失值.....
的補種IDENTITY
列只會繼續發放開始在新的種子新的價值 - 這意味着,在某些時候,早晚,與已有的價值觀的碰撞會發生
因此,所有的一切,補種一個IDENTITY
真的不是一個好主意....只需選擇一個足夠大的數據類型來處理您的需求。
與類型INT
,從1開始,你會得到超過2十億可能行 - 這應該是綽綽有餘了絕大多數情況下。與BIGINT
,你大致得到922 quadrillion(922有15零-9'22'000億) - 足夠你?
如果使用INT IDENTITY
從1開始,你插入一行每秒,則需要66.5 年你打2十億限制之前....
如果使用BIGINT IDENTITY
出發1,你插入一個1000行每秒,你需要一個令人難以置信的2.92億年你打922萬億限制之前....
瞭解更多關於它(與那裏所有的選項是)在MSDN Books Online。
是的,你可以這樣做:
set identity_insert on;
insert into table(id) value(100)
--set它關閉
set identity_insert off;
它可以自己做,不用我的行動?我知道這可能就像你的方式,但我認爲這是不允許自動做 – veljasije
不,它不會自己調整看[鏈接](http://stackoverflow.com/questions/21824478/reset -identity-seed-after-deleted-records-in-sql-server)獲取更多信息 –
你*可以*重新設置'IDENTITY'(設置一個新的種子),但它不會**能夠神奇地*找到*缺少的值.....它會繼續發放新的從新種子開始的價值 - 這意味着,在某些時候,與已有價值**的碰撞將會發生** - 不是一個好主意...... –
你確認我的假設:)我只是好奇,如果有可能的話,但你給了我真正的答案。謝謝! – veljasije