mysql 简单封装一个定时任务

首先,查看event(事件)是否开启

--监测数据库是否开启事件(event)event_scheduler:on 开启;off 关闭
show variables like 'event_scheduler'; 
--开启/关闭event,on 开启;off 关闭
set global event_scheduler = on;

第二步,创建一个存储过程(或者叫做函数),即我们在定时任务中需要执行的sql语句

create procedure table_list_info_update() --名称
begin    --开始标志
   insert into table_list_info
    (table_name, table_project, zymc, lybm, lyxt,zty,zy,gxpl, jxqk, data_type, uploadtime, aqdj, create_time)
select p.table_name,p.table_project, p.zymc,p.lybm,p.lyxt,p.zty,p.zy,p.gxpl, p.gxqk, p.data_type, p.uploadtime,p.st_security_level,p.st_create_time
from (select m.table_name,m.table_project, m.zymc,m.lybm,m.lyxt,m.zty,m.zy,m.gxpl, m.gxqk, m.data_type, m.uploadtime,s.st_security_level,s.st_create_time
 from ali_cloud_resource_table_list_base m
left join zy_zyinfo s on s.st_name = m.table_name and s.st_project = m.table_project
WHERE  1=1 AND
      (SELECT COUNT(1) FROM table_list_info b
            WHERE m.table_name=b.table_name and m.table_project=b.table_project)=0
union
    select m.table_name,m.table_project, m.zymc,m.lybm,m.lyxt,m.zty,m.zy,m.gxpl, m.gxqk, m.data_type, m.uploadtime,s.st_security_level,s.st_create_time
 from ali_cloud_resource_table_list m
left join zy_zyinfo s on s.st_name = m.table_name and s.st_project = m.table_project
WHERE  1=1 AND
      (SELECT COUNT(1) FROM table_list_info b
            WHERE m.table_name=b.table_name and m.table_project=b.table_project)=0) p;
end;    --结束标志

第三步,创建任务

--创建任务
create event if not exists table_list_info_update
    --从2019-09-21 03:00:00开始,每天执行一次
    ON SCHEDULE EVERY '1' day starts timestamp '2019-09-21 03:00:00'
    ON COMPLETION PRESERVE    --循环执行
    --注释,说明这个定时任务执行的内容
    COMMENT '将ali_cloud_resource_table_list表与ali_cloud_resource_table_list_base表的新增数据插入到table_list_info,每天执行一次'
DO
CALL table_list_info_update();    --执行前面设置的存储过程(函数)

自定义任务执行的时间规则:

--一些参数解释
create event if not exists table_list_info_update
    -- 从2019-09-21 03:00:00开始,每天执行一次
    -- 时间参数可以是 second(秒)、minute(分)、hour(时)、day(日)、month(月)、quarter(季)、year(年)
    -- starts timestamp '2019-09-21 03:00:00' 任务开始时间
    ON SCHEDULE EVERY '1' day starts timestamp '2019-09-21 03:00:00'
    -- ENDS CURRENT_TIMESTAMP + INTERVAL 1 DAY 执行1天后 停止
    ON COMPLETION PRESERVE    --循环执行
    -- ON COMPLETION NOT PRESERVE 只执行一次
    -- 注释,说明这个定时任务执行的内容
    COMMENT '将ali_cloud_resource_table_list表与ali_cloud_resource_table_list_base表的新增数据插入到table_list_info,每天执行一次'
DO
CALL table_list_info_update();    --执行前面设置的存储过程(函数)

第一次做定时任务,有错误或不当之处,还望各位大佬能不吝指教!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值