SQL Server能否关闭标识增量?如何将ID_Phisical自增值从20重置为1
自增ID跳值解决方法
原理说明
你遇到的跳值是数据库自增ID的正常机制,不是故障:每次执行插入操作(不管成功失败)都会消耗一个自增ID,目的是避免高并发场景下的ID分配冲突,多次插入空值失败自然会消耗19个ID,导致下一次插入从20开始。
无需新建表,可直接重置自增起始值
不同数据库的重置命令不同,对应常用数据库的操作如下:
- MySQL / MariaDB
执行以下命令即可,若表内有数据,需将1替换为大于当前表内最大ID_Phisical的数值,避免主键冲突:
若表内无有效数据,直接执行ALTER TABLE 你的表名 AUTO_INCREMENT = 1;TRUNCATE TABLE 你的表名即可清空表同时重置自增到1,效率更高。 - SQL Server
执行以下命令重置,下一次插入将从1开始,有数据的场景同样需要调整重置值大于现有最大ID:DBCC CHECKIDENT ('你的表名', RESEED, 0); - PostgreSQL
先确认自增序列名,默认格式为表名_ID_Phisical_seq,执行以下命令重置:ALTER SEQUENCE 你的序列名 RESTART WITH 1;
注意事项
如果表内已经存储了有效业务数据,严禁直接重置到1,否则后续插入新数据时会触发主键重复报错,仅可将自增起始值调整为大于当前表内最大ID_Phisical的数值。

内容的提问来源于stack exchange,提问作者John P
相关产品推荐
相关产品推荐

