如何在系统日期和时间到达截止日期时自动更新数据库表?

时间:2012-12-18 23:06:25

标签: database

我正在撰写网络应用。在数据库中,有一个,可以保留一些截止日期。 另一个表格有两列:namestate。我希望state列在任何到期日期到来时自动更新(更新后的值根据我程序中的某些逻辑计算)。

如何实现此功能?在服务器计算机上运行另一个程序(独立于我的Web应用程序)以检查数据库是否有截止日期并更新表或其他方法是否常见?

2 个答案:

答案 0 :(得分:1)

虽然某些数据库支持计划任务,但大多数DBA使用cron来安排完成工作的任务。

我建议你这样做。

(感谢catcall的评论)

答案 1 :(得分:0)

DELIMITER $$

CREATE EVENT 'DBNAME'.'EVENTNAME'

ON SCHEDULE
    EVERY 1 DAY

ON COMPLETION PRESERVE
ENABLE

DO
    BEGIN
     /*sql statements*/
     UPDATE tableName SET state = 'newState' where NOW() = (SELECT * FROM tableWithDates);
    END

DELIMITER ;

这是在MySql中创建事件的代码。您可以使用Mysql事件更新表中的数据。此事件每1天运行一次,然后执行sql查询。 MySql事件也在后台运行。