zoukankan      html  css  js  c++  java
  • 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)

  • 相关阅读:
    数据库性能测试---前阿里数据库团队资深DBA杨奇龙
    阿里云 MYSQL 与 PG(丁奇与德哥)
    RHEL6中ulimit的nproc限制
    Linux下文件描述符
    Linux中的文件描述符与打开文件之间的关系------------每天进步一点点系列
    5.6 太多分区引起OOM
    Linux lsof命令使用小结
    重现PHP Core的调用栈
    用GDB排查Python程序故障
    mysql 索引优化
  • 原文地址:https://www.cnblogs.com/lit10050528/p/3602005.html
Copyright © 2011-2022 走看看