• 周期任务

  • 查看命令

  1. `show variables like \'%event_sche%\';`
  • 显示的event_scheduler为OFF时用以下命令开启
  1. `set global event_scheduler=1;`
  • 注意:以上的改法在数据库重启后将会恢复为原来状态,要想数据库重启后也可以让event_scheduler开启,则需要在配置文件my.ini的设置。修改如下,然后重启mysql服务即可。
  1. `[mysqld]event_scheduler=ON //这一行加入mysqld标签下`
  1. use test;
  2. delimiter //
  3. create procedure test_proce()
  4. begin
  5. UPDATE df_goods_sku set `status` = 0 where `status`=1 and down_time < now();
  6. end//
  7. delimiter ;

drop procedure test_proce;

  1. use test; 这个谁都知道,使用某个数据库,这里要强调的是存储过程一定是对于某个数据库而言的,所以必须要选中一个数据库才能创建成功。
  2. delimiter // 这个是将mysql中以;(分号)结尾的规定修改为以//(双斜杠)为语句结束符,因为存储过程里可以有多条sql 语句,里面的sql语句都以;号结尾,如果回车了那么系统会当做sql语句直接执行了,我们希望的是先定义这一系列sql语句而先不执行,所以要改下操作结束符。当然你在改后一定要改回来,大家可以看到最后一行有对应的修改回来的语句。
  3. 下面的是一起输入的,可以知道分别是创建存储过程test_proce(),名称可以随便起的,然后是在begin –end之间是定义一系列sql语句的就可以了,记住最后end结尾要以之前修改后的结尾符结束。
  1. create procedure test_proce()
  2. begin
  3. UPDATE df_goods_sku set `status` = 0 where `status`=1 and down_time < now();
  4. end//
  1. create event test_proce
  2. on schedule every 10 second
  3. on completion preserve disable
  4. do call down_goods();

drop event up_good;

代码说明:

  1. 上面为整体代码,敲完再写分号
  2. 第一行create event day_event是创建名为second_event的事件,注意此处没有括号
  3. 第二行是创建周期定时的规则,本处的意思是每秒钟执行一次
  4. 第三行on completion preserve disable是表示创建后并不开始生效。
  5. 第四行do call test_proce()是该event(事件)的操作内容,表示调用我们刚刚创建的test_proce()存储过程。
  1. `SELECT event_name,event_definition,interval_value,interval_field,status FROM information_schema.EVENTS;`

  1. alter event test_proce on completion preserve enable; //开启定时任务
  2. alter event test_proce on completion preserve disable;//关闭定时任务

  • 周期执行–关键字 EVERY

    1. 单位有:second,minute,hour,day,week(周),quarter(季度),month,year

    2. 如:

      1. on schedule every 1 second //每秒执行1次
      2. on schedule every 2 minute //每两分钟执行1次
      3. on schedule every 3 day //每3天执行1次
  • 在具体某个时间执行–关键字 AT

    1. 如:

      1. on schedule at current_timestamp()+interval 5 day //5天后执行
      2. on schedule at current_timestamp()+interval 10 minute //10分钟后执行
      3. on schedule at \'2016-10-01 21:50:00\' //在2016年10月1日,晚上9点50执行
  • 在某个时间段执行–关键字STARTS ENDS

    1. 如:

      1. on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month //5天后开始每天都执行执行到下个月底
      2. on schedule every 1 day ends current_timestamp()+interval 5 day //从现在起每天执行,执行5天

版权声明:本文为zhang-zi-yi原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/zhang-zi-yi/p/11100159.html