web-dev-qa-db-ja.com

MySQLで24時間後に列が自動更新される

列を持つテーブルT1があります:

Name      State             time
mon         1          2014-01-09 11:23:00
tue         0          2014-01-07 14:40:00
wed         2          2014-01-08 09:23:00 
thu         0          2014-01-09 12:23:00   

ここで、イベントをスケジュールするか、トリガー(可能な場合)を開発します。いずれかの状態が0/2で、その時間が現在の時間から24時間を超えている場合は、1に更新する必要があります。

たとえば、上記の表では、火曜日の状態は0で、時間は24時間を超えているため、状態を1に更新する必要があります。これは、水曜日には適用されませんが、木曜日には適用されません。

私は次のような多くの質問をしました:

https://stackoverflow.com/questions/17387802/how-to-auto-update-mysql-after-timestamp-field-expierd

https://stackoverflow.com/questions/12421756/how-to-update-table-after-a-certain-time-interval

しかし、私はまだ理解していません、私の問題を解決する方法

3
Ankit Kapoor
CREATE EVENT reset
    ON SCHEDULE
      EVERY 1 HOUR
        DO
update T1 
set state=1 
where time < date_sub(now(),interval 24 hour) 
  and (state=0 or state=2) ;

それは毎時間実行されます

8
Ankit Kapoor