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



    转载:https://blog.csdn.net/xingfuzhijianxia/article/details/53727820

    需求如下:

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

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


    实现如下:

    1. 开启event_scheduler sql指令

    show variables like '%event_scheduler%';

    1. SET GLOBAL event_scheduler = ON;  
    2. SET @@global.event_scheduler = ON;  
    3. SET GLOBAL event_scheduler = 1;  
    4. SET @@global.event_scheduler = 1;  

    2. 定义存储过程
    1. DELIMITER |  
    2. DROP PROCEDURE IF EXISTS update_remind_status |  
    3. CREATE PROCEDURE update_remind_status()  
    4. BEGIN  
    5.     IF exists (select id from remind where status='1' and SYSDATE()>=remind_time) THEN  
    6.             update remind_receive set `status`='1'  
    7.             where remind_id in (SELECT id from remind where `status`='1' and SYSDATE()>=remind_time) and `status`='3';  
    8.     END IF;  
    9. END   
    10.  |  
    11. DELIMITER;  


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

    1. DELIMITER //  
    2. CREATE EVENT  event_remind_status  
    3. ON SCHEDULE EVERY 1 second  do  
    4. begin  
    5. call update_remind_status();  
    6. end //  
    7. DELIMITER;  


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

    经过测试可成功。

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

  • 相关阅读:
    移动硬盘文件被恶意隐藏
    asp.net identity UserSecurityStamp 的作用
    Head First Python学习笔记1
    WPF 确认动态加载数据完成
    rust by example 2
    Rust by Example1
    奇葩!把类型转成object
    Lambda高手之路第一部分
    理解Lambda表达式
    贪心算法-找零钱(C#实现)
  • 原文地址:https://www.cnblogs.com/dullbaby/p/9105120.html
Copyright © 2020-2023  润新知