项目需要对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