ALTER TABLE
phải có các giá trị theo nghĩa đen trong đó vào thời điểm câu lệnh được phân tích cú pháp (tức là tại thời điểm chuẩn bị).
Bạn không thể đặt các biến hoặc tham số vào câu lệnh tại thời điểm phân tích cú pháp, nhưng bạn có thể đặt các biến vào câu lệnh before thời gian phân tích cú pháp. Và điều đó có nghĩa là sử dụng SQL động:
SET @new_index = (SELECT MAX(id) FROM sales );
SET @sql = CONCAT('ALTER TABLE sales AUTO_INCREMENT = ', @new_index);
PREPARE st FROM @sql;
EXECUTE st;