2014-03-13 123 views
1

自動更新字段如果我有以下表中的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 

什麼是MySQL來自動改變「過期」領域的最佳方式「1」,一旦EXP_DATE傳遞?

+1

雖然你_could_使用[MySQL的調度事件]做(http://dev.mysql.com/doc/refman/5.1/en/create-event.html),我個人建議從cron運行一個腳本來觸發更新語句。 –

回答

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)的索引可以使該更新鎖只有它需要的行。

一定要啓用事件調度程序。這是默認關閉的,而旅行了很多的人誰不想使用它:

mysql> SET GLOBAL event_scheduler = 1; 

閱讀更多的細節在這裏的文檔:http://dev.mysql.com/doc/refman/5.6/en/events.html