MySQL重新设置auto_increment值
需求描述
通常,我们都会在数据库表中设置一个自增字段作为主键,该字段的值会随着添加新记录而自增。
同时也必须注意,这个自增字段的值只会一直增加,即使把记录删除了,该自增字段的值也不会变小。
因此,就会产生一个现象:假如某些记录被物理删除了,那么表中记录的这个自增字段值就不是连续的。
即:通过某个自增值去查询的时候表里并不存在该记录。
处于某种目的,如果希望该自增字段值一定是连续的,有2种解决办法:
1.表记录不允许物理删除
2.物理删除表记录后重新设置auto_increment
在此,专门针对重新设置auto_increment
值进行说明。
更新auto_increment值
在修改表的auto_increment
值之前需要先查看当前值是多少:
mysql> select auto_increment from information_schema.tables where table_schema='数据库名' and table_name='表名';
+----------------+
| auto_increment |
+----------------+
| 60002 |
+----------------+
1 row in set (0.04 sec)
如上,table_schema
参数指定数据库名,table_name
参数指定表名,当前的auto_increment
值为60002。
如果此时我们将表中的最后10000条数据物理删除掉,那么再插入新的记录时,auto_increment
值将会继续增加:60003,60004 ... 。
显然,此时1-50002有记录,50003-60002是没有记录的。
为了使得新添加的记录自增ID再次继续从50003开始计数,执行如下语句:
mysql> alter table 表名 AUTO_INCREMENT=50002;
最后总结
直接修改auto_increment
值的使用场景比较少见,通常不建议这么做。一则通过这种方式来保持自增ID的连续性增加了运维的负担,二则通常不允许直接物理删除表记录。
【参考】
https://blog.csdn.net/hehaoyang666/article/details/41281113 mysql自增ID起始值修改方法
https://blog.csdn.net/fdipzone/article/details/50421831 MySql查看与修改auto_increment方法
作者:编程随笔
出处:http://www.cnblogs.com/nuccch/
声明:本文版权归作者和博客园共有,欢迎转载,但请在文章页面明显位置给出原文连接。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现