Mysql根据数据库的时间字段到点更新另外的状态。

来源:互联网 发布:淘宝第三层级什么意思 编辑:程序博客网 时间:2024/05/17 21:41

需求如下:

添加一条提醒,被提醒人在提醒时间未到达的时候收不到此提醒,提醒时间到了则更改状态,被提醒人看到该提醒。

我们要做的就是:根据提醒时间与当前系统时间比对,如果提醒时间小于等于当前时间时候,更改状态为正常状态值。


实现如下:

1. 开启event_scheduler sql指令

show variables like '%event_scheduler%';

SET GLOBAL event_scheduler = ON;SET @@global.event_scheduler = ON;SET GLOBAL event_scheduler = 1;SET @@global.event_scheduler = 1;

2. 定义存储过程
DELIMITER |DROP PROCEDURE IF EXISTS update_remind_status |CREATE PROCEDURE update_remind_status()BEGINIF exists (select id from remind where status='1' and SYSDATE()>=remind_time) THENupdate remind_receive set `status`='1'where remind_id in (SELECT id from remind where `status`='1' and SYSDATE()>=remind_time) and `status`='3';END IF;END  |DELIMITER;


3. 创建定时器,每间隔一秒调用一次存储过程。

DELIMITER //CREATE EVENT  event_remind_statusON SCHEDULE EVERY 1 second  dobegincall update_remind_status();end //DELIMITER;


4.启动定时器
ALTER EVENT event_remind_status ON  COMPLETION PRESERVE ENABLE;

经过测试可成功。

参考文章 Mysql event时间触发器   , 定时更新表字段的值 。


0 0
原创粉丝点击