gdufo

           

          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)

          導航

          統計

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          收藏夾

          Hibernate

          友情鏈接

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 金山区| 邯郸市| 高青县| 积石山| 信宜市| 荥经县| 黄龙县| 建始县| 封丘县| 巴林左旗| 柳林县| 伊吾县| 临桂县| 额尔古纳市| 宕昌县| 抚远县| 平利县| 嵊泗县| 平远县| 鲜城| 翁牛特旗| 汉寿县| 类乌齐县| 嘉定区| 舟山市| 乐陵市| 临湘市| 巧家县| 定日县| 泽库县| 萨迦县| 雷山县| 开原市| 乐安县| 双鸭山市| 辽阳县| 桓仁| 汤阴县| 大石桥市| 灵台县| 奉化市|