欢迎访问张朋的技术分享社区
当前位置: 首页 > 技术分享  > SQLSERVER

DBCC CHECKIDENT命令介绍(复位自增长ID)

2019/5/29 16:21:48 人评论

一般我们的用法如下:1) 查看且如有必要更正当前标识值: DBCC CHECKIDENT(table_name)2) 查看当前标识值,即使有错也不视图更正: DBCC CHECKIDENT(table_name, NORESEED)3) 指定新的标识值: DBCC CHECKIDENT(table_name, RESEED, new_reseed_value) WITH …

一般我们的用法如下:

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的值。

附件下载

上一篇:case when datename

下一篇:没有了

相关技术

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?