温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

删数据自增序号会回退吗

发布时间:2026-09-07 12:40:56 来源:亿速云 阅读:105 作者:小樊 栏目:数据库

这取决于你用的是哪种数据库以及怎么删数据。一般结论如下:


1. MySQL(InnoDB)

不会回退。

  • AUTO_INCREMENT 只向前增长,不会因为你 DELETE 数据而变小
  • 即使你删掉最大的一条,下一个插入仍然接着原来的自增值

示例:

id: 1,2,3,4
DELETE FROM t WHERE id = 4;
-- 再插入,id 是 5,不是 4

⚠️ 例外情况:

  • 表被 TRUNCATE(会重置)
  • 手动执行:
    ALTER TABLE t AUTO_INCREMENT = 1;
    
  • 重启 MySQL(某些老版本 InnoDB 可能重新计算最大值)

2. PostgreSQL

不会回退,而且根本没有“自增字段”这种说法

  • 用的是 SERIAL / IDENTITY
  • 背后是 sequence
  • DELETE 不影响 sequence
DELETE FROM t;
-- 下一个 id 仍然继续增长

重置方式:

ALTER SEQUENCE t_id_seq RESTART WITH 1;

3. SQL Server

不会回退

  • IDENTITY(1,1) 不会因删除回退
  • 可用:
    DBCC CHECKIDENT ('t', RESEED, 0);
    

4. SQLite

一般不会回退

  • INTEGER PRIMARY KEY AUTOINCREMENT 会记录最大用过的值
  • 普通 ROWID 可能复用,但 不保证

总结一句话

删数据不会让自增 ID 回退,这是数据库的设计原则,目的是避免主键冲突。

如果你是因为“ID 不连续不好看 / 想紧凑”,那是另一回事,我可以给你正确做法。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手