簡體   English   中英

將MySQL數據庫中所有表中的AUTO_INCREMENT設置為最大插入增量值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM