Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So aktualisieren Sie MySQL automatisch, nachdem das Zeitstempelfeld abgelaufen ist

Verwenden Sie dafür

  1. Mysql-Ereignisse (IMHO der beste Kandidat)
  2. Cron-Job oder Windows-Taskplaner (wenn Sie sich auf einer Windows-Plattform befinden)

Wenn Sie sich für Option 1 entscheiden, müssen Sie ein Ereignis erstellen

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

Verwenden Sie SHOW PROCESSLIST um zu überprüfen, ob der Ereignisplaner aktiviert ist. Wenn es ON ist Sie sollten einen Prozess "Daemon" von Benutzer "event_scheduler" sehen. Verwenden Sie SET GLOBAL event_scheduler = ON; um den Planer zu aktivieren, wenn er derzeit nicht aktiviert ist. Mehr zum Konfigurieren des Ereignisplaners hier .

Wenn Sie Ereignisse sehen möchten, die Sie in Ihrem Schema haben

SHOW EVENTS;

AKTUALISIEREN Ihre Update-Anweisung sollte folgendermaßen aussehen

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

Hier ist SQLFiddle Demo