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方法


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM