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)
相关文章
- 深入了解SQL Server数据库的线程与纤程
- 通过SQL Server 2008数据库复制实现数据库同步备份
- 第一章、关于SQL Server数据库的备份和还原(sp_addumpdevice、backup、Restore)
- Tools-->SQL Server Profiler监视数据库
- c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程
- 关于Asp.net超时,延长读取sql server数据库的超时时间!(已解决)
- 性能测试:自建数据库与RDS性能对比SQL Server案例排查分析
- 服务案例|SQL Server数据库监控反复重启问题
- 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——1.2 在你开始之前:使用SQL Server和PowerShell工作
- 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》——2.16 创建索引
- 《PowerShell V3——SQL Server 2012数据库自动化运维权威指南》—— 使用Invoke-Sqlcmd实施批量导出
- SQL SERVER数据库维护与重建索引
- SQL SERVER 数据库日志已满时清理日志的方法
- 乱谈SQL Server数据库视图
- Sql Server 强制断开数据库已有连接的方法
- SQL Server数据库损坏、检测以及简单的修复办法【转】
- (2.13)备份与还原--sql server数据库主要状态和切换路径
- SQL Server数据库快照的工作方式
- SQL Server 断开数据库所有链接