Es gibt viele Probleme mit Ihrem Code:
- Verwenden Sie ein Trennzeichen, wie in Defining Stored erklärt Programme
- es darf kein
S
geben am Ende desDAY
inON SCHEDULE EVERY 15 DAY
wie in CREATE EVENT Syntax erklärt - In der Dokumentation heißt es:"Wie bei gespeicherten Routinen können Sie die zusammengesetzte Anweisungssyntax in der DO-Klausel verwenden, indem Sie die Schlüsselwörter BEGIN und END verwenden", also ein
BEGIN
Schlüsselwort muss nach dem erstenDO
hinzugefügt werden - jede Anweisung muss mit einem Semikolon getrennt werden
- WHILE-Syntax
besagt, dass der Code zwischen
WHILE search_condition DO
eingeschlossen werden muss undEND WHILE
- in Ihrem
INSERT
,day
ist ein Feld:Schließen Sie es in Backticks ein, nicht in Anführungszeichen
Fester Code :
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 ;
Ich schlage vor, Sie lesen die Links, die ich in meiner Antwort angegeben habe. Ziehen Sie in Zukunft die offizielle Dokumentation zurate, wenn Sie ein Problem haben:Die dort gegebenen Informationen sind genau und aktuell und kommen fast immer mit vielen Beispielen, die helfen, die zu verwendende Syntax zu verstehen.