SQL Server的identity自增列从随机数而非1起始如何处理?
自增ID列重置为从1开始递增的解决方案
以下按两种常见场景给出对应操作方法:
场景1:表中无业务数据,仅需调整自增起始值
不同数据库对应操作命令如下:
- MySQL:执行
ALTER TABLE 你的表名 AUTO_INCREMENT = 1; - SQL Server:执行
DBCC CHECKIDENT ('你的表名', RESEED, 0);后续插入数据时ID就会从1开始生成 - PostgreSQL:执行
ALTER SEQUENCE 你的表名_id_seq RESTART WITH 1; - SQLite:执行
DELETE FROM sqlite_sequence WHERE name='你的表名';
场景2:表中已有存量数据,需要将现有行的ID修改为从1开始的连续序号
操作前请务必备份全表数据,避免数据丢失;如果当前ID字段被其他表作为外键关联,请勿直接修改ID,需先同步处理关联表的外键数据。
操作步骤:
- 删除原有的ID列:
ALTER TABLE 你的表名 DROP COLUMN ID; - 重新新增自增主键ID列,新增过程中数据库会自动为现有行按顺序生成从1开始的连续ID:
- MySQL:
ALTER TABLE 你的表名 ADD ID INT UNSIGNED NOT NULL AUTO_INCREMENT FIRST, ADD PRIMARY KEY (ID); - SQL Server:
ALTER TABLE 你的表名 ADD ID INT IDENTITY(1,1) PRIMARY KEY;
- MySQL:
对应问题提到的数据表截图如下:
内容的提问来源于stack exchange,提问作者Nwenar Abbas
相关产品推荐
相关产品推荐

