1. 程式人生 > 其它 >MYSQL的AUTO_INCREMENT的設定方法

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