SQL修改種子標識的當前值
pasting
在日常的sql server開發中,經常會用到Identity類型的標識列作為一個表結構的自增長編號。比如文章編號、記錄序號等等。自增長的標識列的引用很大程度上方便了數據庫程序的開發,但有時這個固執的字段類型也會帶來一些麻煩。
一、修改標識列字段值:
有時,為了實現某種功能,需要修改類型為Identity自增長類型的字段的值,但由于標識列的類型所限,這種操作默認是不允許的。比如目前數據庫有5條正常添加的數據,此時刪除2條,那么如果再添加數據時,自增長的標識列會自動賦值為6,可這時如果想在插入數據時給賦值3呢,默認是不允許的。如果您特別想改變這個字段的值,完全由自己控制該標識字段值的插入,方法還是有的,哈哈。
SET IDENTITY_INSERT [TABLE] [ON|OFF]
使用上述語句,可以方便的控制某個表的某個自增長標識列是否自動增長,也就是說是否允許你在insert一條記錄時手動指定標識列字段的值。如果指定為on,則可以insert時指定標識列字段的值,該值不自動增長賦值。當然,如果使用完畢,還需使用這個語句將開關關閉到默認狀態off,不然下次insert數據時該字段還是不會自動增長賦值的,有始有終嘛。
如:
SET IDENTITY_INSERT [TABLE_NAME] ON
----------- INSERT SEG--------
SET IDENTITY_INSERT [TABLE_NAME] OFF
二、重置標識列字段值:
當數據記錄被刪除一部分后,后面再添加的新數據記錄,標識列數值會有很大的空閑間隔,看上去是不是很不爽呢。即使你刪除表中全部記錄,identity標識列的值還是會無休止的自動增加變大,而不是從頭開始增長。通過下面這條語句可以重置自增長字段的種子值:
DBCC CHECKIDENT(TABLE, [RESEED|NORESEED], 200)上述語句將把指定表的種子值強制重設為1。然而,如果你不想將種子重設為1,你可以用你想用的種子值替代第三個參數。如果你想知道當前的種子,而不是想重設標識種子,這時你就要用NORESEED,而不用再去設置第三個參數。
如 DBCC CHECKIDENT(Product, RESEED, 210)
posted on 2013-08-01 10:56 gdufo 閱讀(5514) 評論(0) 編輯 收藏 所屬分類: Database (oracle, sqlser,MYSQL)