Existem muitos problemas com seu código:
- Use um delimitador conforme explicado em Definindo armazenado Programas
- não deve haver
S
no final deDAY
emON SCHEDULE EVERY 15 DAY
conforme explicado em CREATE EVENT Syntax - A documentação diz "Assim como nas rotinas armazenadas, você pode usar a sintaxe de instrução composta na cláusula DO usando as palavras-chave BEGIN e END", portanto, um
BEGIN
palavra-chave deve ser adicionada após o primeiroDO
- cada instrução deve ser separada por ponto e vírgula
- WHILE Syntax
diz que o código deve ser colocado entre
WHILE search_condition DO
eEND WHILE
- no seu
INSERT
,day
é um campo:coloque-o entre acentos graves, não entre aspas
Código fixo :
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 ;
Sugiro que você leia os links que dei na minha resposta. No futuro, consulte a documentação oficial quando tiver algum problema:as informações fornecidas são precisas e atualizadas e quase sempre vêm com muitos exemplos que ajudam a entender a sintaxe a ser usada.