sql >> Base de Datos >  >> RDS >> Mysql

Desencadenador basado en el tiempo de MySQL

Hay muchos problemas con su código:

  • Utilice un delimitador como se explica en Definición de almacenado Programas
  • no debe haber S al final del DAY en ON SCHEDULE EVERY 15 DAY como se explica en Sintaxis CREATE EVENT
  • La documentación dice "Al igual que con las rutinas almacenadas, puede usar la sintaxis de declaraciones compuestas en la cláusula DO usando las palabras clave BEGIN y END", por lo que un BEGIN la palabra clave debe agregarse después del primer DO
  • cada declaración debe estar separada por un punto y coma
  • WHILE Sintaxis dice que el código debe estar encerrado entre WHILE search_condition DO y END WHILE
  • en su INSERT , day es un campo:enciérrelo entre comillas graves, no entre comillas

Código fijo :

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 ;

Le sugiero que lea los enlaces que le di en mi respuesta. En el futuro, consulte la documentación oficial cuando tenga un problema:la información que se brinda allí es precisa y actualizada, y casi siempre viene con muchos ejemplos que ayudan a comprender la sintaxis a usar.