通过MySql中的变量设置AUTO_INCREMENT值

时间:2017-10-07 16:44:20

标签: mysql auto-increment

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

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

1 个答案:

答案 0 :(得分:4)

使用以下代码。这工作正常。 并按照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;