SQL Server ID 自增不连续、删除数据后再次插入ID不连续

本文介绍了在SQLServer中,当删除数据后主键ID顺序不连续的问题,通过dbcccheckident函数的reseed参数重置标识列,提供了解决方案。还给出了高阶语法示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

当我们使用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')
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值