• mysql定时任务用到存储过程和定时任务


    需求:

        需要将t_app_message中的消息(将要被发送的消息)给每一个学生发送一遍,并且在发送完成后,将消息置为已发送状态已发送状态。

    一言不合上代码

     1 /*删除存储过程*/
     2 drop procedure if exists proc_sendAllMsg; 
     3 /*创建存储过程*/ 
     4 CREATE PROCEDURE proc_sendAllMsg()
     5 BEGIN
     6 /*先插入*/
     7 INSERT t_base_message (sid,mid)
     8 SELECT a.id,b.id from t_base_student  a 
     9 INNER JOIN t_app_message b 
    10 where a.School_id = 1 and  b.sendtime<=NOW() and b.sendstatus = 0;
    11 UPDATE t_app_message  SET sendstatus = 1 where sendtime <=NOW();
    12 UPDATE t_app_message  SET showstatus = 1 where endtime <=NOW();
    13 end 
    14 
    15 /*指定数据库*/ 
    16 use xscp;
    17 /*删除原有的定时任务*/
    18 drop event if exists event_sendAllMsg;  
    19 
    20 CREATE EVENT event_sendAllMsg ON SCHEDULE EVERY 30 second starts  '2017-12-11 00:00:00' 
    21 DO 
    22 CALL proc_sendAllMsg; /*调用存储过程*/
    1 查看event是否开启 : SHOW VARIABLES LIKE '%event_sche%';
    2 将事件计划开启 : SET GLOBAL event_scheduler = 1;
    3 将事件计划关闭 : SET GLOBAL event_scheduler = 0;
    4 关闭事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE;
    5 开启事件任务 : ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE;
    6 查看事件任务 : SHOW EVENTS ;
    View Code

    备注:在event事件中:ON SCHEDULE 计划任务,有两种设定计划任务的方式:
     
    1. AT 时间戳,用来完成单次的计划任务。

    2. EVERY 时间(单位)的数量时间单位[STARTS 时间戳] [ENDS时间戳],用来完成重复的计划任务。

    在两种计划任务中,时间戳可以是任意的TIMESTAMP 和DATETIME 数据类型,时间戳需要大于当前时间。

    在重复的计划任务中,时间(单位)的数量可以是任意非空(Not Null)的整数式,时间单位是关键词:YEAR,MONTH,DAY,HOUR,MINUTE 或者SECOND。

    提示: 其他的时间单位也是合法的如:QUARTER, WEEK, YEAR_MONTH,DAY_HOUR,DAY_MINUTE,DAY_SECOND,HOUR_MINUTE,HOUR_SECOND, MINUTE_SECOND,不建议使用这些不标准的时间单位。

     [ON COMPLETION [NOT] PRESERVE]
     
    ON COMPLETION参数表示"当这个事件不会再发生的时候",即当单次计划任务执行完毕后或当重复性的计划任务执行到了ENDS阶段。而PRESERVE的作用是使事件在执行完毕后不会被Drop掉,建议使用该参数,以便于查看EVENT具体信息。

  • 相关阅读:
    CodeForces 19D Points (线段树+set)
    FZU 2105 Digits Count
    HDU 5618 Jam's problem again(三维偏序,CDQ分治,树状数组,线段树)
    HDU 5634 Rikka with Phi (线段树)
    Java实现 蓝桥杯 算法提高 转圈游戏(暴力快速幂)
    Java实现 蓝桥杯 算法提高 转圈游戏(暴力快速幂)
    Java实现 蓝桥杯 算法提高 转圈游戏(暴力快速幂)
    Java实现 蓝桥杯 算法提高VIP Substrings(暴力)
    Java实现 蓝桥杯 算法提高VIP Substrings(暴力)
    Java实现 蓝桥杯 算法提高VIP Substrings(暴力)
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/8021840.html
Copyright © 2020-2023  润新知