其他分享
首页 > 其他分享> > 重新设置auto_increment值

重新设置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方法

标签:自增,increment,删除,记录,auto,设置,table
来源: https://www.cnblogs.com/nuccch/p/15982117.html