SQL重置(修改)自增列的值

利用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,所以就没有修改了



你可能感兴趣的:(SQL)