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

MySQL tidsbaseret trigger

Der er mange problemer med din kode:

  • Brug et afgrænsningstegn som forklaret i Definering af lagret Programmer
  • der må ikke være nogen S i slutningen af ​​DAY i ON SCHEDULE EVERY 15 DAY som forklaret i CREATE EVENT-syntaks
  • Dokumentationen siger "Som med lagrede rutiner kan du bruge sammensatte sætningssyntaks i DO-sætningen ved at bruge BEGIN og END nøgleordene", så en BEGIN søgeord skal tilføjes efter den første DO
  • hver erklæring skal adskilles med semikolon
  • MENS Syntaks siger, at koden skal være indesluttet mellem WHILE search_condition DO og END WHILE
  • i din INSERT , day er et felt:omslut det i baghak, ikke i anførselstegn

Fast kode :

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 ;

Jeg foreslår, at du læser de links, jeg gav i mit svar. I fremtiden skal du henvise til den officielle dokumentation, når du har et problem:de oplysninger, der gives der, er nøjagtige og opdaterede og kommer næsten altid med mange eksempler, der hjælper med at forstå den syntaks, der skal bruges.




  1. Hvordan justify_days() virker i PostgreSQL

  2. Opret en unik begrænsning med null-kolonner

  3. Hvordan kan jeg få en komplet liste over alle forespørgsler, der i øjeblikket kører på min MySQL-server?

  4. MySQL-forespørgsel for at hente data med kolonnenavne