我有一个mysql数据库,其中包含几个字段,包括:
enter_date(这是一个时间戳字段 - 即2011-09-13 21:04:42) 状态(默认为活动状态) period_allowed(即天数,即5或20或30等)
现在我需要做的是在period_allowed(从enter_date字段开始)之后,状态是从'active'变为'expired'。
即 如果输入日期:2011-09-10-12:00:00 period_allowed:5
然后在9月15日,状态将自动从“活动”更改为“已过期”
有关最佳和最简单方法的想法吗?
谢谢
P.S。看着设置一个cron工作..但编码实现这个?
答案 0 :(得分:2)
您可以创建一个存储过程来执行此更新SQL,并创建一个MySQL事件(如果使用最新版本的MySQL),它定期运行该存储过程。否则,使用mysql命令行客户端创建一个调用存储过程(或只运行update sql)的cron作业。
UPDATE my_table SET status='expired' WHERE NOW() >= ADDDATE(enter_date, period_allowed)
请参阅MySQL 5.1 Create Event文档,它有一个简单的示例,用于创建运行update语句的事件。或者,要创建一个cron作业,您可以在crontab中创建一个使用-e标志调用mysql来执行语句的条目。
答案 1 :(得分:0)
您可以使用mysql事件更新或删除数据或在1天或2天后更新数据我准备一个PHP脚本,即:
$insertquery="CREATE EVENT JOY // joy is event name
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 3 MINUTE //after 3 minute the event will run automatically
DO
BEGIN
insert into tbl2 (col1, col2, col3) select col1,col2,col3 from course_entry where username = ''; //this is mysql job event should do copy data from tbl1 to tbl2
delete from course_entry where username = '';// 2nd mysql job it will delete tbl1 data after insert process is done
END";
mysql_query($insertquery) or die (mysql_error());
希望它对您有用