Mysql 根据时间戳自动更新字段

Mysql 根据时间戳自动更新字段,mysql,database,timestamp,sql-update,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\u日期过去,mysql自动将“expired”字段更改为“1”的最佳方式是什么?您可以使用mysql事件,

如果我在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\u日期过去,mysql自动将“expired”字段更改为“1”的最佳方式是什么?

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


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

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

阅读此处的文档了解更多详细信息:

虽然您可以使用,但我个人建议从cron运行一个脚本来触发update语句。这里必须有一个echo。
mysql> SET GLOBAL event_scheduler = 1;