在 SQL Server 中,删除一条数据不会导致自增列重置。自增列的值是根据表中已有的最大值自动递增生成的,而不是根据表中已删除的行数来计算的。因此,即使删除了一些行,自增列的下一个值仍然会基于表中已有的最大值来计算。如果想重置就需要删除表数据,重置自增ID。有多种方法,我统一使用T-SQL编写。
目录
目录
2、清空表数据,然后重新插入原数据,有两种清除重置更新方法。
2、和存储过程结合使用和触发器相似,只需要把代码放入存储过程代码块就可以了,下面是一个示例。
一、首先建实验环境
1、首先,使用T-SQL创建一个实验表
--创建一个用来收集数据库表简单的结构信息的表
CREATE TABLE [dbo].[Info_Xinxi](
[ID] [INT] IDENTITY(1,1) NOT NULL,--自增ID列
[TabbleName] [VARCHAR](50) NOT NULL,
[ColuntName] [VARCHAR](50) NOT NULL,
[说明] [VARCHAR](255) NULL
)
--向表中插入数据,这边随便插入几条用来测试
INSERT INTO dbo.Info_Xinxi (TabbleName,ColuntName,[说明])
VALUES (1,1,1),
(1,1,1),
(1,1,1),
(1,1,1),
(1,1,1),
(1,1,1),
(1,1,1),
(1,1,1),
(1,1,1),
(1,1,1),
(1,1,1),
(1,1,1)
--查看表数据
SELECT * FROM dbo.Info_Xinxi
可以看到ID列自动生成序号
2、使用语句删除其中有几条条数据并查看新表
DELETE dbo.Info_Xinxi--删除表信息
WHERE ID BETWEEN 5 AND 7--条件是ID在5到7包括两边
SELECT * FROM dbo.Info_Xinxi--查询表所有数据
可以看到中间序号断层了,没有连上
3、插入新数据,查看表数据
INSERT INTO dbo.Info_Xinxi(TabbleName,ColuntName,说明)--插入数据ID列不加,因为ID列是自增列无法插入。
VALUES(2,2,2),--插入数据为2和最开始插入的区分起来
(2,2,2)
SELECT * FROM dbo.Info_Xinxi--查看数据并排序,让结果一目了然
ORDER BY ID
可以看到数据从最大的ID记录往后开始自动填充。
二、更新ID列的方法
1、删除表重新创建新表,将原表数据复制进新表
--首先查询原表所有数据,并且将其数据插入放置在一个局部临时表里。
SELECT * INTO #Lingshi FROM dbo.Info_Xinxi
--删除原先的表
DROP TABLE dbo.Info_Xinxi
--创建一个新表