繁体   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