MySQL存储过程和定时任务
本文档主要介绍如何利用MySQL存储过程和Event事件结合起来,实现数据的定时处理工作
1.创建数据表
create table t1(id int ,name varchar(30))
2.创建存储过程
创建存储过程
delimiter // CREATE PROCEDURE `insert_t1` () BEGIN SET autocommit = 0; INSERT INTO t1 (id, name) select version, table_name from information_schema.TABLES; COMMIT; END // delimiter;
存储过程管理
drop procedure insert_t1; --删除存储过程 call insert_t1(); --调用存储过程 show create procedure ; --查看存储过程定义
3.创建定时任务
语法:
CREATE Event [IF NOT EXISTS] event_name -- 创建使用create event ON SCHEDULE schedule -- on schedule 什么时候来执行,执行频率 ,时间间隔可设置为second、minute、hour、day、week、month、year ,可设置固定开始时间date_add(date_add( current_date(), INTERVAL 1 day), INTERVAL 1 hour) [ON COMPLETION [NOT] PRESERVE] -- 调度计划执行完成后是否还保留,默认是Not Preserve,表示只执行一次 [ENABLE | DISABLE] -- 是否开启事件,默认开启 [COMMENT 'comment'] -- 事件的注释 DO event_body; -- 这个调度计划要做什么?
查看环境变量,是否允许创建和使用event,如果不允许则设置全局环境变量开启event使用
show variables like 'event_scheduler'; set global event_scheduler=1;
创建定时任务
create event event_demo01 on schedule every 1 minute starts date_add(now(),interval 1 minute) on completion PRESERVE do call insert_t1();
定时任务管理
alter event event_demo01 on completion preserve enable; -- 开启定时任务 alter event event_demo01 on completion preserve disable; -- 关闭定时任务 drop event if exists event_demo01 ; --删除定时任务 select event_name,event_definition,interval_value,interval_field,status from information_schema.events; --查看定时任务