DBCC CHECKIDENT
2013/10/31 10:11:18 类别:数据库摘要:由于误入数据而删除导致标识(自动编号)不连续 查找资料找到了 BCC CHECKIDENT 可以解决
本文均为转载(学习为主)
检查指定表的当前标识值,如有必要,还对标识值进行更正。
语法
DBCC CHECKIDENT ( 'table_name' [ , { NORESEED | { RESEED [ , new_reseed_value ] } } ] )
如果标识列上有主键或唯一键约束,
使用DBCC CHECKIDENT ('table_name', RESEED, new_reseed_value) 当前值设置为new_reseed_value,这个时候需要注意:new_reseed_value 的值应该取当前标识列中的最大值,避免插入错误。
示例
A. 如有必要,重置当前标识值
下例在必要的情况下重置 table_name 表的当前标识值。
USE pubs GO DBCC CHECKIDENT (table_name) GO
B. 报告当前标识值
下例报告 table_name 表中的当前标识值;如果该标识值不正确,并不对其进行更正。
USE pubs GO DBCC CHECKIDENT (table_name, NORESEED) GO
C. 强制当前标识值为 30
下例强制 table_name 表中的当前标识值为 30。
USE pubs GO DBCC CHECKIDENT (table_name, RESEED, 30) GO
Ps:
本地实验C例子,当前标识ID最大值=14,修改后,插入合法数据,新增job_ID=31;
如果这个时候,再执行DBCC CHECKIDENT (table_name, RESEED, 30),再插入数据,会出现错误:
主键约束失败错误。无效标识信息可能会导致错误信息 2627。