ALTER TABLE
moet letterlijke waarden bevatten tegen de tijd dat de verklaring wordt geparseerd (d.w.z. tijdens voorbereidingstijd).
U kunt tijdens het parseren geen variabelen of parameters in de instructie plaatsen, maar u kunt wel variabelen in de instructie voor plaatsen tijd ontleden. En dat betekent het gebruik van dynamische SQL:
SET @new_index = (SELECT MAX(id) FROM sales );
SET @sql = CONCAT('ALTER TABLE sales AUTO_INCREMENT = ', @new_index);
PREPARE st FROM @sql;
EXECUTE st;