根据时间戳自动更新字段

时间:2014-03-13 18:28:24

标签: mysql database timestamp sql-update

如果我在mysql中有以下表格:

Table 1:

id   name   expired       exp_date   
1   Andrew     0      2015-12-09 20:00:00
2    John      1      2013-01-01 20:00:00
3    Mike      0      2017-01-13 21:00:00 

一旦exp_date通过,mysql自动将'expired'字段更改为'1'的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

您可以使用mysql事件,每天运行一次以更新将exp_date与当前日期进行比较的表

https://dev.mysql.com/doc/refman/5.1/en/events.html

答案 1 :(得分:1)

其他人评论并回答了我在撰写答案时使用MySQL事件的建议,但我会举一个例子:

CREATE EVENT expire_table1
  ON SCHEDULE EVERY 1 HOUR 
  DO UPDATE table1 SET expired = 1 WHERE expired = 0 AND exp_date < NOW();

(expired, exp_date)上建立索引以使UPDATE只锁定它所需的行会很有用。

请务必启用事件计划程序。它默认情况下已关闭,并且会让很多想要使用它的人绊倒:

mysql> SET GLOBAL event_scheduler = 1;

请在此处阅读文档以获取更多详细信息:http://dev.mysql.com/doc/refman/5.6/en/events.html