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 @   Rangle  阅读(136)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
历史上的今天:
2018-03-29 Oracle案例03——RMAN-06091: no channel allocated for maintenance (of an appropriate type)
点击右上角即可分享
微信分享提示