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