sql >> Databasteknik >  >> RDS >> Mysql

MySQL tidsbaserad utlösare

Det finns många problem med din kod:

  • Använd en avgränsare enligt beskrivningen i Definiera lagrad Program
  • det får inte finnas någon S i slutet av DAY i ON SCHEDULE EVERY 15 DAY som förklaras i SKAPA HÄNDELSE-syntax
  • Dokumentationen säger "Som med lagrade rutiner kan du använda syntax för sammansatta påståenden i DO-satsen genom att använda nyckelorden BEGIN och END", så en BEGIN nyckelordet måste läggas till efter den första DO
  • varje påstående måste separeras med semikolon
  • WHILE-syntax säger att koden måste vara innesluten mellan WHILE search_condition DO och END WHILE
  • i din INSERT , day är ett fält:omslut det med backticks, inte inom citattecken

Fast kod :

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 ;

Jag föreslår att du läser länkarna jag gav i mitt svar. I framtiden, se den officiella dokumentationen när du har ett problem:informationen som ges där är korrekt och uppdaterad och kommer nästan alltid med många exempel som hjälper dig att förstå syntaxen som ska användas.




  1. MySQL- Är det möjligt att säkerhetskopiera mySQL-databas inom en viss tid?

  2. Hur väljer du alla kolumner, plus resultatet av en CASE-sats i oracle 11g?

  3. SQL Server-adress för att ansluta med php

  4. Hur kan jag utföra denna fråga i Oracle