我有一个带有 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 准备语句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;