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;  --查看定时任务

 

posted @ 2024-03-29 15:16  Rangle  阅读(72)  评论(0编辑  收藏  举报