架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7349|回复: 3

[资料] SQL Server数据库自增长标识列的更新修改操作方法

[复制链接]
发表于 2018-8-23 12:20:44 | 显示全部楼层 |阅读模式
在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号。比如文章编号、记录序号等等。自增长的标识列的引用很大程度上方便了数据库程序的开发,但有时这个固执的字段类型也会带来一些麻烦。

一、修改标识列字段值:

有时,为了实现某种功能,需要修改类型为Identity自增长类型的字段的值,但由于标识列的类型所限,这种操作默认是不允许的。比如目前数据库有5条正常添加的数据,此时删除2条,那么如果再添加数据时,自增长的标识列会自动赋值为6,可这时如果想在插入数据时给赋值3呢,默认是不允许的。如果您特别想改变这个字段的值,完全由自己控制该标识字段值的插入,方法还是有的,哈哈。

SET IDENTITY_INSERT /[TABLE/] [ON|OFF]
使用上述语句,可以方便的控制某个表的某个自增长标识列是否自动增长,也就是说是否允许你在insert一条记录时手动指定标识列字段的值。如果指定为on,则可以insert时指定标识列字段的值,该值不自动增长赋值。当然,如果使用完毕,还需使用这个语句将开关关闭到默认状态off,不然下次insert数据时该字段还是不会自动增长赋值的,有始有终嘛。

二、重置标识列字段值:

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

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




上一篇:SQL Server 2012 自动增长列,值跳跃问题
下一篇:Windows 无法启动 Redis 服务,错误 1067: 进程意外终止。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2018-8-23 12:57:08 | 显示全部楼层
1.删除表中的所有的数据的同时,将自动增长清零。 (   truncate table TableName   )

2.不删除表的数据,直接重置自动增长的值。(   DBCC CHECKIDENT('TableName', RESEED, 0)
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2018-8-23 13:01:32 | 显示全部楼层
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
 楼主| 发表于 2019-2-13 09:59:15 | 显示全部楼层
查看某个表中的自增列当前的值:
    DBCC   CHECKIDENT   (TableName)

修改某个表中的自增列当前的值:
    DBCC   CHECKIDENT   (TableName,   RESEED,   value)
    RESEED不是列名,固定写法。


比如我要把 Division 表中的 自增列 的当前值改为 30 可以用如下命令
DBCC   CHECKIDENT   (Division,   RESEED,   30)
然后用
DBCC   CHECKIDENT   (Division)
你可以看到显示的是当前值是30
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2024-4-20 13:00

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表