通常,我们都会在数据库表中设置一个自增字段作为主键,该字段的值会随着添加新记录而自增。
同时也必须注意,这个自增字段的值只会一直增加,即使把记录删除了,该自增字段的值也不会变小。
因此,就会产生一个现象:假如某些记录被物理删除了,那么表中记录的这个自增字段值就不是连续的。
即:通过某个自增值去查询的时候表里并不存在该记录。
处于某种目的,如果希望该自增字段值一定是连续的,有2种解决办法:
1.表记录不允许物理删除
2.物理删除表记录后重新设置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方法