Sql Server數據庫自增長字段標識列的插入或更新修改操作辦法


寫在前面的話:在日常的Sql server開發中,經常會用到Identity類型的標識列作為一個表結構的自增長編號。比如文章編號、記錄編號等等。自增長的標識很大程度上方便了數據庫程序的開發,但有時候這個固執的字段類型也會帶來一些麻煩。

1、修改標識列的字段值

有時為了實現某些功能,需要修改類型為identity自增長類型的字段的值,但由於標識列的類型所限,這種操作默認是不允許的。比如目前數據庫有5條正常添加的數據,此時刪除2條,那么如果再添加數據時,自增長的標識列會自動賦值為6,可這時如果想在插入數據時賦值給3呢,默認是不允許的。如果你特別想改變這個值,完全由自己來控制該標識字段值的插入,方法還是有的。

set INENTITY_INSERT [tableName] [on/off]

使用上述語句,可以方便的控制某個表的某個自增長列標識是否自動增長,也就是說是否允許你在inset一條記錄時手動指定列標識字段的值,如果指定為on,則可以在insert時指定標識列字段的值,該值不自動增長賦值。當然使用完畢,還需要用這個語句將開關關閉到原始狀態off,否則下次insert數據時該字段還是不會自動增長賦值的。

set IDENTITY_INSERT [tableName] on

insert into tableName

set IDENTITY_INSERT [tableName] off

2、重置標識列字段值

當數據記錄被刪除一部分后,后面再添加的新數據記錄,標識列數值會有很大的空閑間隔,看起來很不爽。即使你刪除表中所有數據,identity標識列還是會無休止的自動增長下去,而不是重頭開始增長,通過下面的語句可以重置自增長字段的種子值:

dbcc CHECKIDENT(table, [reset|noreset], 200)

上述語句將把指定的種子值強制重設為200。然而,如果你不想將種子重設為200,你可以通過修改第三個參數來改變。如果你想知道當前種子的值,而不想重設種子,那么可以中noreset,這樣就不需要設置第三個參數了。

dbcc CHECKIDENT(table, NORESET)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM