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