Mysql
 sql >> Base de données >  >> RDS >> Mysql

Déclencheur basé sur le temps MySQL

Il y a beaucoup de problèmes avec votre code :

  • Utilisez un délimiteur comme expliqué dans Définir Stocké Programmes
  • il ne doit pas y avoir de S à la fin de DAY dans ON SCHEDULE EVERY 15 DAY comme expliqué dans Syntaxe CREATE EVENT
  • La documentation indique "Comme pour les routines stockées, vous pouvez utiliser la syntaxe d'instruction composée dans la clause DO en utilisant les mots clés BEGIN et END", donc un BEGIN le mot-clé doit être ajouté après le premier DO
  • chaque instruction doit être séparée par un point-virgule
  • Syntaxe WHILE indique que le code doit être placé entre WHILE search_condition DO et END WHILE
  • dans votre INSERT , day est un champ :mettez-le entre guillemets, pas entre guillemets

Code fixe :

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 ;

Je vous suggère de lire les liens que j'ai donnés dans ma réponse. A l'avenir, référez-vous à la documentation officielle lorsque vous rencontrez un problème :les informations qui y sont données sont exactes et à jour, et sont presque toujours accompagnées de nombreux exemples permettant de comprendre la syntaxe à utiliser.