如果我在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'的最佳方法是什么?
答案 0 :(得分:1)
您可以使用mysql事件,每天运行一次以更新将exp_date与当前日期进行比较的表
答案 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