通过MySql中的变量设置AUTO_INCREMENT值

3qpi33ja  于 2023-02-28  发布在  Mysql
关注(0)|答案(1)|浏览(128)

我有一个包含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);

那就不行了,怎么通过变量设置自动增量值?

tpgth1q7

tpgth1q71#

使用下面的代码,运行良好,并遵循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;

相关问题