mysql - 如何在 MySQL 中定期更新状态

标签 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/

相关文章:

php - 在mysql中保存图像名称?

php - 无法使用while循环将mysql字段插入div

php - 我如何从 MySQL 获取特定的最后一个值

mysql - mysql中字符串相关操作

php - 获取英文版的所有产品 - WooCommerce 和 WPML

java - 使用延迟加载时 Hibernate List 为空,但在热切加载时它有结果

mysql - 在MySQL中,有更好的方法来知道插入记录时的排名吗?

mysql - 在 HTML 中显示 mysql 换行符

php - mysql选择与id数组匹配的多行

mysql - 将 WordPress 从 WAMP 上传到 GoDaddy 时出现数据库错误(无法本地访问网站)