sql >> Base de Datos >  >> RDS >> Mysql

MYSQL e innoDB alteran dinámicamente AUTO_INCREMENT de una tabla

ALTER TABLE debe tener valores literales en el momento en que se analiza la instrucción (es decir, en el momento de la preparación).

No puede poner variables o parámetros en la declaración en el momento del análisis, pero puede poner variables en la declaración antes analizar el tiempo. Y eso significa usar SQL dinámico:

SET @new_index = (SELECT MAX(id) FROM sales );
SET @sql = CONCAT('ALTER TABLE sales AUTO_INCREMENT = ', @new_index);
PREPARE st FROM @sql;
EXECUTE st;