小编典典

更新MySQL数据库中所有表的AUTO_INCREMENT值

mysql

它可以通过以下方式设置/重置AUTO_INCREMENTMySQL表的值

ALTER TABLE some_table AUTO_INCREMENT = 1000

但是我需要设置AUTO_INCREMENT其现有值(以修复MM复制),例如:

ALTER TABLE some_table SET AUTO_INCREMENT = AUTO_INCREMENT + 1 这不起作用

好吧,实际上,我想对数据库中的所有表运行此查询。但这实际上不是很关键。

除了手动运行查询之外,我找不到解决该问题的方法。您能否提出一些建议或向我指出一些想法。

谢谢


阅读 829

收藏
2020-05-17

共1个答案

小编典典

使用:

ALTER TABLE some_table AUTO_INCREMENT = 0

…将根据auto_increment列中现有的最高值将auto_increment值重置为下一个值。

要在所有表上运行该表,您将需要使用MySQL的动态SQL语法,称为PreparedStatements,因为您无法为变量表提供ALTER TABLE语句的表名。您必须遍历以下来源的输出:

SELECT t.table_name
  FROM INFORMATION_SCHEMA.TABLES t
 WHERE t.table_schema = 'your_database_name'

…对每个表运行上面的ALTER TABLE语句。

2020-05-17