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

Aktualisieren Sie den Spaltenwert nach dem Einfügen und den Zeitraum

Das ist wahrscheinlich nicht der richtige Ansatz. Ich meine, Sie könnten ein Ereignis einrichten, das für jede Zeile verarbeitet wird, aber das könnte Ihrer Datenbank viel Last hinzufügen.

Stattdessen, wenn status bedeutet lediglich, dass die Zeile weniger oder mehr als einen Tag alt ist, geben Sie ein Erstellungsdatum in die Tabelle ein und verwenden Sie eine Ansicht:

create view v_table as
     select t.*, (creation_date >= date_sub(now(), interval 1 day) as status
     from table t;

Wenn status auf andere Weise geändert werden kann, nennen Sie es dann so etwas wie _status und tun:

create view v_table as
     select t.*,
            (case when creation_date >= date_sub(now(), interval 1 day then 1 else _status end) as status
     from table t;