zoukankan      html  css  js  c++  java
  • MYSQL利用事件和存储过程实现执行定时任务

    比如有如下需求:删除某个表中当前时间距离日期字段(create_date) 大于8分钟的所有记录,每30s执行一次该操作。

    1.创建存储过程test()

    //删除ljh_test表中超过8分钟的记录

    //date_add() 增加

    //date_sub()减少

    //month 月份 minute 分钟 second 秒

    //例如:select DATE_ADD(NOW(),INTERVAL 1 MONTH); //一个月后的时间

     CREATE PROCEDURE test ()

      BEGIN

        delete from ljh_test WHERE create_date <= DATE_SUB(NOW(),INTERVAL 8 MINUTE);
      END;

    2.创建事件e_test,每30秒执行test()存储过程

    CREATE EVENT if not exists e_test
    on schedule every 30 second
    on completion preserve
    do call test();

    3.查看mysql中event_scheduler是否打开

    show variables like 'event_scheduler'

    如果在关闭状态,需要打开它

    set global event_scheduler=1;

    启动某事件任务

    alter event e_test ON COMPLETION PRESERVE ENABLE;

    关闭某事件任务

    alter event e_test ON COMPLETION PRESERVE DISABLE;

    删除某事件

    drop EVENT e_test

    删除某存储过程

    drop PROCEDURE test

  • 相关阅读:
    idea 找不到包或找不到符号
    JOISC部分题解
    欧拉数学习笔记
    [清华集训2017]生成树计数
    [ZJOI2019]开关
    【题解】CF817E Choosing The Commander
    CSP-S 2020游记
    【学习笔记】线段树合并
    【题解】[IOI2005]Riv 河流
    【题解】哈希冲突
  • 原文地址:https://www.cnblogs.com/lijiahong/p/6860577.html
Copyright © 2011-2022 走看看