利用dbcc checkident('tableName',noreseed)可以查询当前自增列的值
tableName:表的名字 noresseed:指定不应更改当前标识值。
修改使用dbcc checkident('tableName',reseed,Value)
tableName:表的名字 reseed:指定应该更改当前标识值。 Value:修改后的标识值
例如说,我有一个表:table1
里面有一个从1开始增量为1的自增列,使用dbcc checkident('table1',noreseed)我查询到当前的标识值已经是9了
然后我删除了第一行变成了这样
,
现在我将要插入一行新的数据,但是我要将这数据插入到原来标识值为1的地方,可以先执行dbcc checkident('table1',reseed,0)注意,这里要将标识值先设为0,因为插入的时候会自动先增长一次,然后再用insert into插入语句插入就可以了。
当然,接下来再插入数据就会提示你插入了重复的键了,原因是自增列的标识值变到了2,而2是已经有的,
这时候,如果你没有特别的要求,那就应该先将标识值调回最大值,再插入数据,返回最大的标识值我用
declare @i int
set @i = (select MAX(no) no from table1)
begin
dbcc checkident('table1',reseed,@i)
end
用了变量,好像不能直接dbcc checkident('table1',reseed,(select MAX(no) no from demand))
这样会报错,所以我用变量来代替了,select MAX(No) No from table1可以查询到最大标识值, No是自增列的列名,我的表的自增列列名设的是NO,所以就没有修改了