通过 MySql 中的变量设置 AUTO_INCREMENT 值
Set AUTO_INCREMENT value through variable in MySql
我有一个 table 和一个 auto_increment 列。我将列的最后一个值保存在另一个名为 ids_tbl 的 table 中,当 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) FROM `ids_tbl` );
SET @sql = CONCAT('ALTER TABLE `outgoing_tbl` AUTO_INCREMENT = ', @max_id);
PREPARE st FROM @sql;
EXECUTE st;
我有一个 table 和一个 auto_increment 列。我将列的最后一个值保存在另一个名为 ids_tbl 的 table 中,当 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) FROM `ids_tbl` );
SET @sql = CONCAT('ALTER TABLE `outgoing_tbl` AUTO_INCREMENT = ', @max_id);
PREPARE st FROM @sql;
EXECUTE st;