Mysql
 sql >> Database >  >> RDS >> Mysql

Trigger basato sul tempo MySQL

Ci sono molti problemi con il tuo codice:

  • Utilizzare un delimitatore come spiegato in Definizione di Stored Programmi
  • non devono esserci S alla fine del DAY in ON SCHEDULE EVERY 15 DAY come spiegato in CREATE EVENT Syntax
  • La documentazione dice "Come per le routine memorizzate, puoi usare la sintassi dell'istruzione composta nella clausola DO usando le parole chiave BEGIN e END", quindi un BEGIN la parola chiave deve essere aggiunta dopo il primo DO
  • ogni istruzione deve essere separata da un punto e virgola
  • Sintassi WHILE dice che il codice deve essere racchiuso tra WHILE search_condition DO e END WHILE
  • nel tuo INSERT , day è un campo:racchiudilo tra apici, non tra virgolette

Codice fisso :

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 ;

Ti suggerisco di leggere i link che ho fornito nella mia risposta. In futuro, in caso di problemi, fare riferimento alla documentazione ufficiale:le informazioni fornite sono accurate e aggiornate e quasi sempre vengono fornite con molti esempi che aiutano a capire la sintassi da utilizzare.