首先,查看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(); --执行前面设置的存储过程(函数)
第一次做定时任务,有错误或不当之处,还望各位大佬能不吝指教!!!