sql >> Database >  >> RDS >> Mysql

MySQL tijdgebaseerde trigger

Er zijn veel problemen met uw code:

  • Gebruik een scheidingsteken zoals uitgelegd in Opgeslagen definiëren Programma's
  • er mag geen S . zijn aan het einde van DAY in ON SCHEDULE EVERY 15 DAY zoals uitgelegd in CREATE EVENT-syntaxis
  • De documentatie zegt:"Net als bij opgeslagen routines, kunt u de syntaxis van samengestelde instructies gebruiken in de DO-clausule door de sleutelwoorden BEGIN en END te gebruiken", dus een BEGIN trefwoord moet worden toegevoegd na de eerste DO
  • elke instructie moet worden gescheiden door een puntkomma
  • WHILE-syntaxis zegt dat de code moet worden ingesloten tussen WHILE search_condition DO en END WHILE
  • in uw INSERT , day is een veld:zet het tussen backticks, niet tussen aanhalingstekens

Vaste code :

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 ;

Ik raad je aan de links te lezen die ik in mijn antwoord heb gegeven. Raadpleeg in de toekomst de officiële documentatie als je een probleem hebt:de informatie die daar wordt gegeven is nauwkeurig en up-to-date en bevat bijna altijd veel voorbeelden die je helpen de te gebruiken syntaxis te begrijpen.




  1. Hoe UTC-datum naar lokale tijdzone te converteren in MySql Select Query

  2. verwijder alle numerieke tekens uit de kolom mysql

  3. Dubbele tabellen verwijderen

  4. BESTELLEN OP datum en tijd VOORDAT GROEP OP naam in mysql