sql >> Database >  >> RDS >> Mysql

Hoe MySQL automatisch bij te werken nadat het tijdstempelveld is verlopen

Gebruik kan daarvoor gebruiken

  1. Mysql-evenementen (IMHO de beste kandidaat)
  2. cron job of Windows Taakplanner (als je op Windows-platform werkt)

Als je voor optie 1 kiest, moet je een evenement maken

CREATE EVENT myevent 
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR DO 
UPDATE myschema.mytable 
   SET mycol = mycol + 1;

Gebruik SHOW PROCESSLIST om te controleren of de gebeurtenisplanner is ingeschakeld. Als het ON is je zou een proces "Daemon" moeten zien door gebruiker "event_scheduler". Gebruik SET GLOBAL event_scheduler = ON; om de planner in te schakelen als deze momenteel niet is ingeschakeld. Meer over het configureren van gebeurtenisplanner hier .

Als u gebeurtenissen in uw schema wilt zien

SHOW EVENTS;

UPDATE Uw update-statement zou er als volgt uit moeten zien

UPDATE online_auctions 
   SET auction_status = 'ENDED' 
 WHERE auction_end_date < NOW();

Hier is SQLFiddle demo




  1. Voorbeeld van het gebruik van bind_result versus get_result

  2. IDEF1X Notatie

  3. Hoe stop je MySQL bij een Mac OS-installatie?

  4. Laravel $q->where() tussen datums