Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Acionador baseado em tempo do MySQL


Existem muitos problemas com seu código:
  • Use um delimitador conforme explicado em Definindo armazenado Programas
  • não deve haver S no final de DAY em ON SCHEDULE EVERY 15 DAY conforme explicado em CREATE EVENT Syntax
  • A documentação diz "Assim como nas rotinas armazenadas, você pode usar a sintaxe de instrução composta na cláusula DO usando as palavras-chave BEGIN e END", portanto, um BEGIN palavra-chave deve ser adicionada após o primeiro DO
  • cada instrução deve ser separada por ponto e vírgula
  • WHILE Syntax diz que o código deve ser colocado entre WHILE search_condition DO e END WHILE
  • no seu INSERT , day é um campo:coloque-o entre acentos graves, não entre aspas

Código fixo :
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 ;

Sugiro que você leia os links que dei na minha resposta. No futuro, consulte a documentação oficial quando tiver algum problema:as informações fornecidas são precisas e atualizadas e quase sempre vêm com muitos exemplos que ajudam a entender a sintaxe a ser usada.