Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zeitbasierter MySQL-Trigger

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 des DAY in ON 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 ersten DO 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 und END 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.