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ó
S
vào cuốiDAY
trongON SCHEDULE EVERY 15 DAY
như đượ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
BEGIN
từ 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 DO
vàEND WHILE
- trong
INSERT
của bạn ,day
là 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.