需求描述
通常,我們都會在數據庫表中設置一個自增字段作為主鍵,該字段的值會隨着添加新記錄而自增。
同時也必須注意,這個自增字段的值只會一直增加,即使把記錄刪除了,該自增字段的值也不會變小。
因此,就會產生一個現象:假如某些記錄被物理刪除了,那么表中記錄的這個自增字段值就不是連續的。
即:通過某個自增值去查詢的時候表里並不存在該記錄。
處於某種目的,如果希望該自增字段值一定是連續的,有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方法