在SQLServer输入数据时,碰到有主键ID需要维护时,可使用IDENT_CURRENT和CHECKIDENT命令来维护。
 
一般我们的用法如下:
1) 查看且如有必要更正当前标识值:
     DBCC CHECKIDENT('table_name')
 
2) 查看当前标识值,即使有错也不视图更正:
     DBCC CHECKIDENT('table_name', NORESEED)
 
3) 指定新的标识值:
     DBCC CHECKIDENT('table_name', RESEED, new_reseed_value)
 
WITH NO_INFOSGS是关闭消息提示。
---------------------------------------------------------------------------------------------------------------------------------------------------------
需要注意的问题:
当设置的new_reseed_value小于表中主键ID的值时,后续再插入过程中会出现以下错误:
 a) 当主键或唯一约束存在时,会报2627错误,因为当前的主键值已在数据表中,产生冲突;
 b) 当主键或唯一约束不存在时,会报重复主键错误。
 
解决方法:
 先使用select max(id) from table_name, 查询出表中最大的ID,然后重新设置一个比其打的new_reseed_value;
 如果表中数据已经删除,可以使用DBCC CHECKIDENT('table_name', NORESEED, 1)置为1,然后用DBCC CHECKIDEN('table_name')来修正。
 
另外,在SQL中,如果要插入ID,一般我们可以用select IDENT_CURRENT('table_name')+1 来插入比当前序列值多1的值。
 
 
IDENT_CURRENT命令返回指定表或视图生成的最后一个标识值。用法如下:
 
     IDENT_CURRENT('table_name')
返回类型numeric(38,0).
 
DBCC  CHECKIDENT命令用于检查或指定当前表/视图的标识值。用法如下:
 
DBCC CHECKIDENT
(
     table_name
          [, {NORESEED | {RESEED [, new_reseed_value] } } ]
)
[WITH NO_INFOSGS]

关于SQLServer数据库DBCC CHECKIDENT命令的更多相关文章

  1. 第三章——使用系统函数、存储过程和DBCC SQLPERF命令来监控SQLServer(3)

    原文:第三章--使用系统函数.存储过程和DBCC SQLPERF命令来监控SQLServer(3) 本文为这个系列最后一篇.将是如何使用DBCC命令来监控SQLServer日志空间的使用情况. 前言: ...

  2. 命令行下从bak文件恢复sqlserver数据库方法

    命令行下从bak文件恢复sqlserver数据库方法 注:本文所示访问从SqlServer 2000 - 2014版都是通用的 参考:http://blog.sina.com.cn/s/blog_5c ...

  3. DBCC常用命令小汇

    DBCC是SQL Server提供的一组控制台命令,功能很强大,掌握一些必要的语句,对操作数据库有不少帮助,所以决定整理一下,发现已有不少类似的整理,减少了不少工作,归类如下: 一.DBCC 帮助类命 ...

  4. (转)对SQLSERVER数据库事务日志的疑问

    本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/06/10/3130856.html 对SQLSERVER数据库事务日志的疑问 摸不透SQLS ...

  5. SQLSERVER数据库死锁与优化杂谈

    死锁杂谈 当数据库死锁时,SqlServer会释放一个优先级较低的锁,让另一个事务运行:所以,即时去捕捉数据库死锁,是挺不容易的. 如果,数据库死锁比较长时间,那么死锁是可以被捕捉的. 可以用SqlS ...

  6. sqlserver数据库出现可疑错误修复方法

    一.主数据库出现可疑修复方法: 第一种方法: 当数据库发生这种操作故障时,可以按如下操作步骤可处理此要领,打开数据库里的Sql查询编辑器窗口,运行以下的命令: ?修改数据库为紧急模式 ALTER DA ...

  7. SQLServer数据库自增长标识列的更新修改操作

    SQLServer数据库自增长标识列的更新修改操作方法在日常的sql server开发中,经常会用到Identity类型的标识列作为一个表结构的自增长编号.比如文章编号.记录序号等等.自增长的标识列的 ...

  8. DBCC CHECKIDENT 和SET IDENTITY_INSERT table OFF

    TRUNCATE TABLE [DBO].TRACKING_CODE_BASE_Jasmine DELETE FROM TRACKING_CODE_BASE_Jasmine 有同一张表,一次用trun ...

  9. SqlServer数据库(可疑)解决办法4种

     亲自试过,可行!!!!! SqlServer数据库(可疑)解决办法4种   重启服务--------------------------------------------------日志文件丢了, ...

  10. checkpoint(sqlserver数据库检查点)

    关于检查点的解释:   出于性能方面的考虑,数据库引擎对内存(缓冲区缓存)中的数据库页进行修改,但在每次更改后不将这些页写入磁盘.相反,数据库引擎定期发出对每个数据库的检查点命令.“检查点”将当前内存 ...

随机推荐

  1. Visual Studio 2022(VS2022) 产品密钥

    Visual Studio 2022(VS2022) 激活码: Pro: TD244-P4NB7-YQ6XK-Y8MMM-YWV2JEnterprise: VHF9H-NXBBB-638P6-6JHC ...

  2. .Net Core WebApi + Vue前后端分离项目中的jwt令牌应用

    1.Start up 里面配置JWT认证方案 //认证方案 services.AddAuthentication(option => { option.DefaultAuthenticateSc ...

  3. android studio 导出 release aar

  4. Java DelayQueue包装类

    public class DelayQueueWrapper<T> { private TimeUnit timeUnit; private final Long capacity; pr ...

  5. 修改文件时mmap如何处理

    拷贝二进制(elf)文件 在拷贝二进制文件的时候,如果文件是一个可执行文件,并且有一个进程在运行这个可执行文件,那么拷贝的时候会出现"文本忙"(ETXTBSY)的错误提示,并且拷贝 ...

  6. Python学习笔记组织文件之用zipfile模块压缩文件

    随笔记录方便自己和同路人查阅. #------------------------------------------------我是可耻的分割线--------------------------- ...

  7. 19c 滚动升级

    一.环境说明   节点1 节点2 IP 192.168.3.77 192.168.3.88 DB 版本 Oracle 19.6.0.0.0 Oracle 19.6.0.0.0 OS 主机名 oadb1 ...

  8. C++实现单链表相关操作

    #include<iostream>#include<cstdlib>//C++动态分配存储空间using namespace std;#define OK 1#define ...

  9. QDateEdit

    self.dateEdit.setCalendarPopup(True) # 日历增加 # 日历转化位str类型begintime = self.dateEdit.dateTime().toStrin ...

  10. 杭电oj 青年歌手大奖赛_评委会打分

    Problem Description 青年歌手大奖赛中,评委会给参赛选手打分.选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分.   Input 输入数据有多组,每 ...