Mysql数据库:添加定时任务并执行
一、开启定时任务
1、查看event是否已开启:
SHOW VARIABLES LIKE '%event_sche%';
OFF代表未开启,ON代表已开启。
2、开启事件调度线程(事件计划):
SET GLOBAL event_scheduler = ON;
mysql使用一个事件调度线程的特殊线程来执行所有调度事件,开启事件任务前需要开启该线程。
3、关闭事件调度线程(事件计划):
SET GLOBAL event_scheduler = OFF;
4、查看当前调度计划中已有的所有事件任务列表:
show events;
5、开启事件任务:
ALTER EVENT eventName ON COMPLETION PRESERVE ENABLE;
6、关闭事件任务:
ALTER EVENT eventName ON COMPLETION PRESERVE DISABLE;
开启和关闭事件任务语句中的eventName需更改为需要开启和关闭的任务名称,在事件任务列表中有名字显示。
二、创建存储过程
1、删除同名存储过程(重复执行语句时防止报错,每次先清除再重新生成):
DROP PROCEDURE IF EXISTS xxxxxxx;
2、生成存储过程:
CREATE PROCEDURE xxxxxxx() BEGIN sssssssEND
其中xxxxxxx为存储过程名称,在编写定时任务时需调用,sssssss则为要执行的sql语句。
三、创建定时任务
1、删除同名定时任务(先清除再重新生成):
DROP EVENT IF EXISTS ttttttt;
2、生成定时任务:
CREATE EVENT ttttttt
ON SCHEDULE EVERY 1 DAY
STARTS TIMESTAMP '2022-07-05 00:00:00' ON COMPLETION PRESERVE
DO BEGIN CALL xxxxxxx(); END
在这段代码中:
ttttttt:定时任务名称;
ON SCHEDULE:计划任务(分两种类型:AT代表一次性任务,在指定时间执行一次任务;EVERY代表重复性任务,每隔多久执行一次任务);
1 DAY:可修改为其他数字和单位(当前是代表一天执行一次,可随意更换数字和单位,单位类型有YEAR,MONTH,DAY,HOUR,MINUTE,SECOND);
STARTS:代表开始执行的时间,ENDS用法相同,代表结束执行的时间。后面跟随TIMESTAMP时间戳类型或者DATETIME时间格式类型;
ON COMPLETION:当这个事件执行结束的时候(不会再发生的时候,如一次性执行结束或者重复性任务运行到结束时间,停止再执行);
PRESERVE:保留该事件,搭配前面的语句,意思是当这个定时任务执行完了之后,不进行删除而是保留,类似于逻辑删除,可以作为历史数据进行查询;
CALL:执行存储过程,搭配定时实现定时执行某个sql语句的效果,即定时任务。
添加定时任务后需开启生效。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构