Có nhiều vấn đề với mã của bạn:
- Sử dụng dấu phân tách như được giải thích trong Xác định Đã lưu trữ Các chương trình
- không được có
Svào cuốiDAYtrongON SCHEDULE EVERY 15 DAYnhư được giải thích trong TẠO Cú pháp SỰ KIỆN - Tài liệu cho biết "Cũng như các quy trình được lưu trữ, bạn có thể sử dụng cú pháp câu lệnh ghép trong mệnh đề DO bằng cách sử dụng các từ khóa BEGIN và END", vì vậy
BEGINtừ khóa phải được thêm vào sauDOđầu tiên - mỗi câu lệnh phải được phân tách bằng dấu chấm phẩy
- Cú pháp WHILE
cho biết mã phải được đặt giữa
WHILE search_condition DOvàEND WHILE - trong
INSERTcủa bạn ,daylà một trường:đặt nó trong dấu gạch ngược, không đặt trong dấu ngoặc kép
Mã cố định :
DELIMITER $$$
CREATE EVENT autoDayInsert ON SCHEDULE EVERY 15 DAY DO BEGIN
SET @dayCounter = 0;
WHILE @dayCounter < 15 DO
INSERT INTO appointmentDays(`day`) VALUES(NOW() + INTERVAL @dayCounter DAY);
SET @dayCounter = @dayCounter +1;
END WHILE;
END $$$
DELIMITER ;
Tôi đề nghị bạn đọc các liên kết tôi đã đưa ra trong câu trả lời của tôi. Trong tương lai, hãy tham khảo tài liệu chính thức khi bạn gặp sự cố:thông tin được cung cấp ở đó là chính xác và cập nhật, đồng thời hầu như luôn đi kèm với nhiều ví dụ giúp hiểu cú pháp để sử dụng.