通过 MySql 中的变量设置 AUTO_INCREMENT 值

问题描述 投票:0回答:1

我有一个带有 auto_increment 列的表。我将列的最后一个值保存在另一个名为 ids_tbl 的表中,当 mysql 重新启动时,从 ids_tbl 中读取值并重新设置 AUTO_INCREMENT 值。 如果我这样做:

alter table outgoing_tbl auto_increment=500; 

有效

但是如果我这样做

select @max_id:= max_id FROM ids_tbl;
alter table outgoing_tbl auto_increment=@max_id; 

或者如果我这样做:

select @max_id:= max_id FROM ids_tbl;
alter table outgoing_tbl auto_increment=(select @max_id); 

然后它不起作用,我如何通过变量设置自动增量值?

mysql auto-increment
1个回答
25
投票

使用下面的代码。这工作正常。 并遵循 MySQL 准备语句https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html

SET @max_id = (SELECT MAX(id) + 1 FROM `ids_tbl` );
SET @sql = CONCAT('ALTER TABLE `outgoing_tbl` AUTO_INCREMENT = ', @max_id);
PREPARE st FROM @sql;
EXECUTE st;
© www.soinside.com 2019 - 2024. All rights reserved.