[英]Set AUTO_INCREMENT in all tables within a MySQL DB to the largest inserted increment value
是否可以將數據庫中所有表的AUTO_INCREMENT
值設置為最新的插入值?
更新例如,如果我的表有1000條記錄,其增量值為1..1000,而我刪除了最后900條記錄,則該字段中的最后增量值為100。我想將AUTO_INCREMENT設置為101。數據庫中的表。
這是自動完成的。
引用手冊 :
您不能將計數器重置為小於或等於當前使用的值。 對於InnoDB和MyISAM,如果該值小於或等於AUTO_INCREMENT列中當前的最大值,則該值將重置為當前的最大AUTO_INCREMENT列值加1。
AUTO_INCREMENT實際上會記住它插入的最后一個數字,即使已刪除數據也是如此。 因此,如果您的AUTO_INCREMENT編號小於100,則可以臨時插入AUTO_INCREMENT編號= 100的空白數據,然后將其刪除。 下次插入數據時,它將轉到101。
您可以使用此查詢將AUTO_INCREMENT編號重置為表中當前的最高編號。
ALTER TABLE table_name AUTO_INCREMENT = 1;
是否可以將數據庫中所有表的AUTO_INCREMENT值設置為最新的插入值?
AUTO_INCREMENT
的值實際上是下一個可用值,即最大值加1。
如果您的表使用InnoDB
引擎,那么您要做的就是重新啟動MySQL服務器(不是計算機,而是MySQL服務)。
該文檔說明了服務啟動時如何存儲(在內存中,而不是在磁盤上) AUTO_INCREMENT
的值並進行恢復:
要在服務器重啟后初始化自動遞增計數器,InnoDB在包含
AUTO_INCREMENT
列的表中的第一個插入處執行以下語句的等效項。SELECT MAX(ai_col) FROM table_name FOR UPDATE;
InnoDB遞增該語句檢索的值,並將其分配給表的列和自動遞增計數器。 默認情況下,該值增加
1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.