修改sqlserver自动增长Identity字段

一、修改identity标识列字段值

  有时需要修改类型为sqlserver表中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标识列字段值:

  当数据记录被删除一部分后,后面再添加的新数据记录,标识列数值会有很大的空闲间隔,即使删除表中全部记录,identity标识列的值还是会无休止的自动增加变大,而不是从头开始增长。通过下面这条语句可以重置自增长字段的种子值:

DBCC CHECKIDENT(TABLE, [RESEED|NORESEED], 200)

  上述语句将把指定表的种子值强制重设为1。然而,如果你不想将种子重设为1,你可以用你想用的种子值替代第三个参数。如果你想知道当前的种子,而 不是想重设标识种子,这时你就要用NORESEED,而不用再去设置第三个参数。

如  DBCC CHECKIDENT(Product, RESEED, 210)

来源:http://www.cnblogs.com/rene1018/archive/2012/06/16/2551630.html

加支付宝好友偷能量挖...


评论(0)网络
阅读(426)喜欢(0)操作系统及应用软件