如果我在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自动将“过期”字段更改为“1”的最佳方式是什么?
发布于 2014-03-13 18:40:41
在我撰写答案时,其他人提出了使用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)上有一个索引来使更新只锁定它需要的行是很有用的。
确保启用事件调度程序。默认情况下,它是关闭的,这会让许多想要使用它的人感到震惊:
mysql> SET GLOBAL event_scheduler = 1;有关更多详细信息,请参阅文档:http://dev.mysql.com/doc/refman/5.6/en/events.html
发布于 2014-03-13 18:37:26
您可以使用mysql事件,每天运行一次更新表,将exp_date与当前日期进行比较。
https://stackoverflow.com/questions/22387710
复制相似问题