mysql 计划任务 调用存储过程

项目需要对mysql中几张表做集计,并每天定时将相应的数据插入到相应的表中

通过网上了解,mysql有一个新的特性event,事件、定时任务

下面贴出相应的创建语句,以备以后参考

首先先建一个存储过程

 /* 将结束符改为 $$,mysql中以;为结束符*/ 

DELIMITER $$
DROP PROCEDURE IF EXISTS AAA;
CREATE PROCEDURE AAA()
BEGIN

        /* 定义变量*/ 
DECLARE _id INT;
DECLARE _time timestamp;
DECLARE _curtime DATE DEFAULT date_sub(CURDATE(),interval 1 day);

DECLARE done INT DEFAULT FALSE;
DECLARE cur cursor FOR SELECT id,time from A;
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE;
 /* 打开游标*/ 
open cur;

read_loop: loop
/* 循环游标*/ 
fetch cur into _id,_time;
if done then
leave read_loop;
end if;

/* insert 相应操作  TIMESTAMPDIFF(SECOND,_mintime,_maxtime)=0 */ 
/* 结束循环*/ 
END LOOP;

 /* 关闭游标*/ 
CLOSE cur;


END $$
DELIMITER;


创建计划任务,每天零点执行存储过程
DELIMITER $$
drop event if exists AAA_event;
create event AAA_event
ON SCHEDULE EVERY 1 DAY STARTS '2015-11-09 00:00:00'
on completion preserve
do BEGIN
call AAA()
END $$
DELIMITER ;


计划任务默认不开启

查询是否开启:show VARIABLES LIKE '%sche%';

需要开启event_scheduler

SET GLOBAL event_scheduler = 1;

重启机器后,还需要再开启,可以设置mysql的event_scheduler 常开
在my.ini配置文件中[mysqld]下加 event_scheduler = ON


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值