MYSQL的AUTO_INCREMENT的設置方法


AUTO_INCREMENT可以在創建表的時候設定初始值。

當然,建表完成后,可以使用ALTER TABLE `表名` AUTO_INCREMENT = m來重設自增初始值

  • 當ENGINE=MyISAM,MySQL會選擇數據表中的AUTO_INCREMENT列的最大值+1和m中的較大值作為新的AUTO_INCREMENT值
  • 當ENGINE=InnoDB,如果AUTO_INCREMENT小於當前數據表中的AUTO_INCREMENT列的最大值+1,則MySQL不會做任何操作

但是,使用alter,會使得MySQL對整個表加鎖,不能修改,影響正常服務。如果表里的數據量非常大,則復制數據會相當的花時間。

所以,我們可以使用以下的方法去修改AUTO_INCREMENT,

1. 增大AUTO_INCREMENT

首先插入一行傀儡數據,插入時將該行數據的ID設置為AUTO_INCREMENT的目標值-1。進行此操作后,則AUTO_INCREMENT會自動變為你所需要設置的目標值。

2. 減小AUTO_INCREMENT

這種方法只適用於使用InnoDB引擎的表,因為在InnoDB中,使用的是內存自增計數器,也就是說,AUTO_INCREMENT不會寫入到硬盤中。使用InnoDB的表在數據庫重啟后,會根據當前AUTO_INCREMENT列的最大ID設置AUTO_INCREMENT的值,而MyISAM的表不會。

首先刪除所有比目標值大的ID的行,然后重啟數據庫,再使用之前改大的方法設置AUTO_INCREMENT


免責聲明!

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



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