Hay muchos problemas con su código:
- Utilice un delimitador como se explica en Definición de almacenado Programas
- no debe haber
S
al final delDAY
enON SCHEDULE EVERY 15 DAY
como se explica en Sintaxis CREATE EVENT - La documentación dice "Al igual que con las rutinas almacenadas, puede usar la sintaxis de declaraciones compuestas en la cláusula DO usando las palabras clave BEGIN y END", por lo que un
BEGIN
la palabra clave debe agregarse después del primerDO
- cada declaración debe estar separada por un punto y coma
- WHILE Sintaxis
dice que el código debe estar encerrado entre
WHILE search_condition DO
yEND WHILE
- en su
INSERT
,day
es un campo:enciérrelo entre comillas graves, no entre comillas
Código fijo :
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 ;
Le sugiero que lea los enlaces que le di en mi respuesta. En el futuro, consulte la documentación oficial cuando tenga un problema:la información que se brinda allí es precisa y actualizada, y casi siempre viene con muchos ejemplos que ayudan a comprender la sintaxis a usar.