S vaším kódem je mnoho problémů:
- Použijte oddělovač, jak je vysvětleno v Definování uložených Programy
- nesmí být žádné
S
na konciDAY
vON SCHEDULE EVERY 15 DAY
jak je vysvětleno v syntaxe CREATE EVENT - Dokumentace říká:„Stejně jako u uložených rutin můžete použít syntaxi složených příkazů v klauzuli DO pomocí klíčových slov BEGIN a END“, takže
BEGIN
klíčové slovo musí být přidáno za prvníDO
- každý příkaz musí být oddělen středníkem
- Syntaxe WHILE
říká, že kód musí být uzavřen mezi
WHILE search_condition DO
aEND WHILE
- ve vašem
INSERT
,day
je pole:uzavřete jej do zpětných znamének, nikoli do uvozovek
Pevný kód :
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 ;
Doporučuji, abyste si přečetli odkazy, které jsem uvedl ve své odpovědi. Pokud budete mít v budoucnu problém, nahlédněte do oficiální dokumentace:zde uvedené informace jsou přesné a aktuální a téměř vždy obsahují mnoho příkladů, které pomohou pochopit použitou syntaxi.