如何在一定时间间隔后更新表

syn*_*012 1 mysql

如果条件匹配,如何在一段时间间隔后更新表格?

tb_contest
id   contest_id   name   is_expire
1    101          new    0
2    102          old    0

tb_answer
contest_id   answer_id   date
101          1           2012-02-02
101          2           2012-09-14
102          5           2012-06-01

我需要tb_contest在满足某些条件后更新,并is_expire=1根据收到的最后一个答案在2天后进行更新:2012-03-14所以tb_contest应该更新2012-09-16.

egg*_*yal 5

您可以使用MySQL的事件调度程序:

CREATE EVENT expire_contests
  ON SCHEDULE EVERY DAY
     STARTS CURRENT_DATE
  DO UPDATE tb_contest JOIN (
       SELECT   contest_id, MAX(date) AS latest
       FROM     tb_answer
       GROUP BY contest_id
     ) t USING (contest_id)
     SET    tb_contest.is_expire = 1
     WHERE  tb_contest.is_expire <> 1
        AND t.latest <= CURRENT_DATE - INTERVAL 2 DAY
Run Code Online (Sandbox Code Playgroud)