![](/img/trans.png)
[英]Using variable in setting mysql INNODB AUTO_INCREMENT table value
[英]Updating auto_increment value in an InnoDB table
简短版:我可以以编程方式更新表上的auto_increment值吗? 我正在尝试通过mysql init_file来执行此操作,因此它会在启动时发生,但我看不到它起作用。
USE theDb;
SELECT max(maxid) FROM (SELECT max(RegistrationId)+1 maxid FROM Registration
UNION
SELECT max(RegistrationId)+1 maxid FROM RegistrationArchive) t into @maxId;
ALTER TABLE Registration AUTO_INCREMENT=@maxId;
较长的版本:我有一个带有InnoDB表的mysql数据库。 一个表(包含注册信息)具有一个自动递增列,当处理一行时,它将被复制到第二个存档表,并从第一个存档表中删除。 存档表没有自动递增列。 (顺便说一句,不是我的设计...)
问题是,由于某种原因(很少见)重新启动数据库时,第一个表将重新计算下一个增量值-InnoDB的功能。 该表通常是空的或很小,并且计算出的下一个增量将对应于已使用且在存档表中的ID。 数据被移到了可以的存档位置,但之后的后续处理将无法正常工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.