简短版本:我可以以编程方式更新表上的 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。数据可以移动到存档,但之后的后续流程无法正常工作。