将MySQL DB中所有表中的AUTO_INCREMENT设置为最大插入的增量值

时间:2017-06-08 08:38:57

标签: mysql

是否可以将数据库中所有表的AUTO_INCREMENT值设置为最新的插入值?

UPDATE 例如,如果我的表有1000条记录,增量值从1..1000开始,并且我删除了最后900条记录,则字段中的最后一个增量值将为100.我想将AUTO_INCREMENT设置为101.这对于所有表在DB。

3 个答案:

答案 0 :(得分:0)

这是自动完成的。

引用manual

  

您无法将计数器重置为小于或等于当前正在使用的值的值。对于InnoDB和MyISAM,如果该值小于或等于AUTO_INCREMENT列中当前的最大值,则该值将重置为当前最大AUTO_INCREMENT列值加1。

答案 1 :(得分:0)

AUTO_INCREMENT实际上记住它插入的最后一个数字,即使数据已被删除。因此,如果您的AUTO_INCREMENT数字小于100,您可以临时插入AUTO_INCREMENT number = 100的空白数据,然后将其删除。下次插入数据时,它将转到101。

您可以使用此查询将AUTO_INCREMENT数重置为表中当前最高的数字。

ALTER TABLE table_name AUTO_INCREMENT = 1;

答案 2 :(得分:0)

  

是否可以将数据库中所有表的AUTO_INCREMENT值设置为最新的插入值?

AUTO_INCREMENT的值实际上是下一个可用值,即最大值加1。

如果您的表使用InnoDB引擎,那么您所要做的就是重新启动MySQL服务器(不是计算机而只是MySQL服务)。

documentation解释了AUTO_INCREMENT如何存储(在内存中,不在光盘上)并在服务启动时恢复的值:

  

要在服务器重新启动后初始化自动增量计数器,InnoDB会在第一次插入时将以下语句的等效语句执行到包含AUTO_INCREMENT列的表中。

SELECT MAX(ai_col) FROM table_name FOR UPDATE;
     

InnoDB递增语句检索的值,并将其分配给列和表的自动递增计数器。默认情况下,该值增加1