黄东旭解析 TiDB 的核心优势
803
2023-11-09
本篇内容主要讲解“怎么用mysql自带的定时器定时执行sql”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用mysql自带的定时器定时执行sql”吧!
每天往一个表里面插入两条数据,但日期不同
INSERT INTO test(`id`, `art_training_institutions`, `places_for_performances`, `script_entertainment`, `video_game_hall`, `stage`, `ktv`, `Internet_bar`, `status`, `statistics_time`, `insert_time`) VALUES (100, 2253, 61, 546, 90, 51, 897, 1961, 1, 2022-08-24, 2022-08-25 14:00:00);INSERT INTO test(id`, `art_training_institutions`, `places_for_performances`, `script_entertainment`, `video_game_hall`, `stage`, `ktv`, `Internet_bar`, `status`, `statistics_time`, `insert_time`) VALUES (101, 0, 0, 0, 0, 0, 0, 0, 2, 2022-08-24, 2022-08-25 14:00:00);如果没有其他调度或者不想每天自己手动执行,可以考虑使用MySQL自带的定时器来做
首先
如果你的是OFF
那就需要开启:
set global event_scheduler=1;根据自己的需求,修改存储函数
CREATE PROCEDURE insert_monitor() INSERT INTO test( `art_training_institutions`, `places_for_performances`, `script_entertainment`, `video_game_hall`, `stage`, `ktv`, `Internet_bar`, `status`, `statistics_time`) select 2253, 61, 546, 90, 51, 897, 1961, 1, CURRENT_DATE union all select 0, 0, 0, 0, 0, 0, 0, 2, CURRENT_DATE删除
drop event my_monitor如果不想删除,可以考虑将它关闭
每天凌晨一点执行定时任务
on schedule every 1 DAY STARTS DATE_ADD(DATE(CURRENT_DATE+1), interval 1 hour) on schedule EVERY 1 DAY STARTS date_add(date( ADDDATE(curdate(),1)),interval 1 hour)特定的日期特定的时间点执行定时任务
ON SCHEDULE at 2019-10-10 19:14:10每五分钟执行一次定时任务
ON SCHEDULE EVERY 5 MINUTE STARTS CURDATE()每小时执行一次定时任务
ON SCHEDULE EVERY 1 HOUR STARTS CURDATE()at 特定时间执行,every 重复执行
参考 MySQL - 定时任务(每天凌晨1点、每小时、每分钟、某一时间点)
周期性
定时器,一直执行
从现在开始每隔x天执行一次
DROP EVENT IF EXISTS user_event ; CREATE EVENT user_event ON SCHEDULE EVERY 9 DAY STARTS NOW() DO call user_procedure();每天凌晨1点执行
DROP EVENT IF EXISTSuser_event ;CREATE EVENT user_event on schedule EVERY 1 DAY STARTS date_add(date( ADDDATE(curdate(),1)),interval 1 hour) DO call user_procedure();每个月的一号凌晨1 点执行
DROP EVENT IF EXISTS 定时器名称 ; CREATE EVENT user_event ON schedule every 1 month starts date_add(date_add(date_sub(curdate(),interval day(curdate())-1 day),interval 1 month),interval 1 hour) DO call user_procedure();每个季度一号的凌晨1点执行
DROP EVENT IF EXISTS user_event ; CREATE EVENT user_event ONschedule every1 quarter starts date_add(date_add(date(concat(year(curdate()),-,elt(quarter(curdate()),1,4,7,10),-,1)),interval 1 quarter),interval 1 hour) DO call user_procedure();每年1月1号凌晨1点执行
DROP EVENT IF EXISTSuser_event ;CREATE EVENT user_event ON schedule every 1 quarter starts date_add(date_add(date(concat(year(curdate()),-,elt(quarter(curdate()),1,4,7,10),-,1)),interval 1 quarter),interval 1 hour) DO call user_procedure();周期一次性
定时器执行很多次后在满足某个条件,定时器结束
从现在开始每天执行一次,5天后停止执行
DROP EVENT IF EXISTS user_event ; CREATE EVENT user_event ONSCHEDULE EVERY1 DAY ENDS CURRENT_TIMESTAMP + INTERVAL 5 DAY DO call user_procedure();从现在开始5天后开始执行,一个月后停止执行
DROP EVENT IF EXISTS user_event ; CREATE EVENT user_event ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 5 DAYENDSCURRENT_TIMESTAMP + INTERVAL 1 MONTH DO call user_procedure();一次性
满足指定条件时只会执行一次定时器,然后定时器被清除
在未来指定时间点执行一次
DROP EVENT IF EXISTS user_event ; CREATE EVENT user_event ON SCHEDULE AT TIMESTAMP 2021-09-24 18:26:00 ONCOMPLETIONNOT PRESERVE DO call user_procedure();在2021-09-24 18:26:00时候执行user_procedure()存储过程一次之后,该定时器被系统清除从现在开始1小时后执行一次
DROP EVENT IF EXISTS user_event ; CREATE EVENT user_event ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR ON COMPLETION NOT PRESERVE DO call user_procedure();开启和关闭指定定时器
alter event user_event on completion preserve enable; -- 开启定时任务 alter event user_event on completion preserve disable; -- 关闭定时任务到此,相信大家对“怎么用mysql自带的定时器定时执行sql”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。