好久没写博客了,因为没啥可写,感觉自己对技术的追求已经没有那么强烈了。今天总结一下mysql自带的定时计划。
首先show variables like '%event_sche%';
查询定时策略是否开启,如果是关闭的话,需要先开启哦。
执行语句即可:set global event_scheduler=1;
文章来源:https://www.toymoban.com/news/detail-595253.html
- 创建存储过程
下述案例创建了 名为test_proce
的存储过程函数,方便创建事件,事件直接调用该存储过程。
use miaosuyun;
delimiter //
create procedure test_proce()
begin
UPDATE order_course a
join (
SELECT
B.*
FROM
(
SELECT
ROW_NUMBER() over ( PARTITION BY a.id ) AS row_num,A.*
FROM
order_course A
WHERE
A.course_username IN (
SELECT
course_username
FROM
order_course
WHERE
course_status IN ( '2', '4' ,'12')
GROUP BY
course_username
HAVING
SUM( CASE WHEN course_status = '4' THEN 1 ELSE 0 END ) = 0
AND SUM( CASE WHEN course_status = '12' THEN 1 ELSE 0 END ) = 0
AND SUM( CASE WHEN course_status = '2' THEN 1 ELSE 0 END ) > 0
)
AND A.course_status = '2'
) B
WHERE
B.row_num = 1
) b on a.id = b.id set a.course_status = '1';
update order_course a
join (select *from order_course a where a.course_status in ('3','4') and a.recent_update_time <= DATE_SUB(NOW(), INTERVAL 10 MINUTE)) b on a.id = b.id
set a.course_status = '1',a.error_msg= null,a.cookie=null,a.watch_finish_rate=0;
end//
delimiter ;
- 创建事件
-- 删除事件
drop event second_event
-- 创建事件 并 每隔300秒调用一次
create event second_event
on schedule every 300 second
do call test_proce();
常用定时执行计划文章来源地址https://www.toymoban.com/news/detail-595253.html
-- 表示创建后并不开始生效
on completion preserve disable
on schedule every 1 second //每秒执行1次
on schedule every 2 minute //每两分钟执行1次
on schedule every 3 day //每3天执行1次
on schedule at current_timestamp()+interval 5 day //5天后执行
on schedule at current_timestamp()+interval 10 minute //10分钟后执行
on schedule at '2016-10-01 21:50:00' //在2016年10月1日,晚上9点50执行
on schedule every 1 day starts current_timestamp()+interval 5 day ends current_timestamp()+interval 1 month //5天后开始每天都执行执行到下个月底
on schedule every 1 day ends current_timestamp()+interval 5 day //从现在起每天执行,执行5天
- 开启/关闭 任务
event second_event
alter event second_event on completion preserve enable;
event second_event
alter event second_event on completion preserve disable;
- 查询事件
SELECT event_name,event_definition,interval_value,interval_field,status,last_executed FROM information_schema.EVENTS;
到了这里,关于MySql定时执行SQL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!