zoukankan      html  css  js  c++  java
  • mysql 定时任务

    mysql 定时任务


    参考博客:https://www.cnblogs.com/laowu-blog/p/5073665.html等资料,进行练习学习。


    (1)首先查看mysql是否开启了定时任务:

    mysql> show variables like '%event_%';

    +----------------------------------------------------------+-------+
    | Variable_name | Value |
    +----------------------------------------------------------+-------+

    | event_scheduler | OFF |
    +----------------------------------------------------------+-------+


    (2)如果值是OFF,表示没有开启,然后开启定时任务:

    SET GLOBAL event_scheduler = 1;


    (3)创建存储过程和mysql事件:

    需求为每天1点,自动检查商品里还有30天过期的数据,更新状态未下架,并标注原因:

    DELIMITER //    
    
    DROP PROCEDURE IF EXISTS check_package_enddate//

    CREATE PROCEDURE check_package_enddate_proc() BEGIN UPDATE goods set status=2,comment=concat('取消时间:',now(),' 原因:套餐激活截止时间距今不足30天,系统自动取消。') where end_date <= DATE_SUB(NOW(), INTERVAL 30 DAY); END// DROP EVENT IF EXISTS check_package_enddate_event// CREATE EVENT check_package_enddate_event ON SCHEDULE EVERY 1 DAY STARTS TIMESTAMP DATE_ADD(DATE_ADD(CURDATE(), INTERVAL 1 DAY), INTERVAL 1 HOUR) ON COMPLETION PRESERVE DO BEGIN CALL check_package_enddate_proc(); END// DELIMITER ;

    知识总结:

      1、使用到了mysql的存储过程的删除和添加;

      2、使用到了mysql的定时事件的删除和添加;

      3、使用了mysql函数now(),获取当前日期;

      4、使用了mysql函数concat(),字符串连接函数;

      5、使用了mysql函数DATE_SUB(),从日期减去指定的时间间隔;

      6、使用了delimiter 修改sql语句结束符;

      7、使用了mysql函数DATE_ADD(),从日期加上指定的时间间隔;

      8、事件的开始时间必须大于当前时间。


  • 相关阅读:
    Kendo UI
    Docker
    jQuery DataTables && Django serializer
    MySQL ODBC for Linux
    mongoengine
    Python之多线程
    Python中的正则表达式
    通过恢复目录(Catalogue)进行PDB级别的PITR恢复
    执行PDB的PITR恢复失败的说明
    在PDB级别中如何切换或重建UNDO表空间
  • 原文地址:https://www.cnblogs.com/gyfluck/p/9548223.html
Copyright © 2011-2022 走看看