<分区>
我正在创建一个todo 应用程序。我有一个状态列,它接收 1、2 或 3(待定、逾期、已完成)
。
每当我创建一个任务时,它都会被设置为pending
。用户可以将其标记为完成。但是有没有一种方法可以自动将其更新为过期
,以防未完成且due_date
小于今天?
标签 mysql
<分区>
我正在创建一个todo 应用程序。我有一个状态列,它接收 1、2 或 3(待定、逾期、已完成)
。
每当我创建一个任务时,它都会被设置为pending
。用户可以将其标记为完成。但是有没有一种方法可以自动将其更新为过期
,以防未完成且due_date
小于今天?
最佳答案
您可以使用 MySQL
事件调度程序。
先决条件:
你的 mysql 服务器必须有 event_scheduler
ON
。
检查事件调度器是ON
还是OFF
SELECT @@event_scheduler;
要打开 event_scheduler ON
,请运行以下查询:
SET GLOBAL event_scheduler = ON;
注意:如果您重新启动MYSQL Server
,那么除非在配置文件中写入以下内容,否则事件调度程序状态将被重置。
对于 Windows: 在 my.ini 文件的 [mysqld]
部分下
[mysqld]
event_scheduler=on
对于 Linux: 在 my.cnf 文件中
[mysqld]
event_scheduler=on
事件:
CREATE
EVENT `updateStatusEvent`
ON SCHEDULE EVERY 1 DAY STARTS '2016-08-11 00:00:00'
ON COMPLETION NOT PRESERVE
ENABLE
DO
UPDATE your_table SET status_column = 2 WHERE your_time_column < CURDATE();
该事件将在 '2016-08-11 00:00:00'
首次开始
之后每隔1天安排一次事件,并更新相应数据的状态。
关于mysql - 如何在 MySQL 中定期更新状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38878746/