我正在编写一个Web 应用程序。在它的数据库中,有一个表格保存了一些截止日期。另一个表有两列:name
和state
。我希望在state
这些到期日期中的任何一个到达时自动更新该列(更新的值是根据我的程序中的某些逻辑计算的)。
我怎样才能实现这个功能?在服务器机器上运行另一个程序(独立于我的 Web 应用程序)来检查数据库的到期日期并更新表是否很常见,或者还有其他方法吗?
我正在编写一个Web 应用程序。在它的数据库中,有一个表格保存了一些截止日期。另一个表有两列:name
和state
。我希望在state
这些到期日期中的任何一个到达时自动更新该列(更新的值是根据我的程序中的某些逻辑计算的)。
我怎样才能实现这个功能?在服务器机器上运行另一个程序(独立于我的 Web 应用程序)来检查数据库的到期日期并更新表是否很常见,或者还有其他方法吗?
尽管一些数据库支持计划任务,但大多数 DBA 使用cron
计划任务来完成工作。
我建议你这样做。
(感谢 catcall 的评论)
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 事件也在后台运行。