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

  • 相关阅读:
    1新随笔
    MySQL--DML语言
    记一下Spring整合MyBatis踩的坑
    MyBatis(二)动态sql
    Mybatis动态代理注意事项
    几个练习指法和盲打的网站
    友链
    博客初心&心情小计
    博客园美化之标题显示
    博客园美化鼠标点击效果【富强民主文明和谐……】
  • 原文地址:https://www.cnblogs.com/lijiahong/p/6860577.html
Copyright © 2011-2022 走看看