背景
当我们使用SQL Server 进行数据库操作时,经常会把 Table 的 ID 设置成主键自增 PRIMARY KEY IDENTITY,但是这样做存在一个问题就是 当我们删除一行数据后,再次添加后会看到ID的顺序不连续,如下所示。
查询一下:
当我们删除 PersonId=2 的值后 ,添加一条 wangwu 的数据 后 PersonId=3 不是 PersonId=2
解决方法
dbcc checkident('table_name',reseed,new_reseed_value)
dbcc checkident('Person',reseed,1)
参数
table_name
是要检查其当前标识值的表的名称。指定的表必须包含标识列。表名必须遵循标识符规则。必须分隔两个或三个部分名称,例如"Person.AddressType"或[Person.AddressType]。
NORESEED
指定不应更改当前标识值。
RESEED
指定应更改当前标识值。
new_reseed_value
是要用作标识列的当前值的新值。
WITH NO_INFOMSGS
禁止显示所有信息性消息。
高阶语法
DECLARE @A INT
SET @A=(SELECT TOP 1 PersonId FROM Person ORDER BY PersonId DESC)
dbcc checkident('Person',reseed,@A)
insert into Person values('wangwu','My name is wangwu')