首页 > 数据库 > mysql教程 > mysql event的用法_MySQL

mysql event的用法_MySQL

WBOY
发布: 2016-06-01 13:39:18
原创
945 人浏览过

bitsCN.com
mysql event的用法 MySQL从5.1开始支持event功能,类似oracle的job功能。有了这个功能之后我们就可以让MySQL自动的执行数据汇总等功能,不用像以前需要操作系统提供的定时器的支持了。如linux crontab功能。       创建测试表   CREATE TABLE t   (   v VARCHAR(100) NOT NULL   ) ENGINE INNODB DEFAULT CHARSET=utf8;   创建定时器调用的存储过程   DELIMITER $$   DROP PROCEDURE IF EXISTS e_test $$   CREATE PROCEDURE e_test()   BEGIN   INSERT INTO t VALUES('1');   END $$   DELIMITER ;   要使定时起作用 MySQL的常量GLOBAL event_scheduler必须为on或者是1       -- 查看是否开启定时器   SHOW VARIABLES LIKE '%sche%';   -- 开启定时器 0:off 1:on   SET GLOBAL event_scheduler = 1;   -- 创建事件   --每隔一秒自动调用e_test()存储过程   CREATE EVENT IF NOT EXISTS event_test   ON SCHEDULE EVERY 1 SECOND   ON COMPLETION PRESERVE   DO CALL e_test();   -- 开启事件   ALTER EVENT event_test ON   COMPLETION PRESERVE ENABLE;   -- 关闭事件   ALTER EVENT event_test ON   COMPLETION PRESERVE DISABLE;   SELECT * FROM t;   一些例子:       从现在开始每隔九天定时执行   CREATE EVENT EVENT1   ON SCHEDULE EVERY 9 DAY STARTS NOW()   ON COMPLETION PRESERVE ENABLE   DO   BEGIN   CALL TOTAL();   END   每个月的一号凌晨1 点执行   CREATE EVENT EVENT2   ON SCHEDULE EVERY 1 MONTH STARTS DATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)   ON COMPLETION PRESERVE ENABLE   DO   BEGIN   CALL STAT();   END       每个季度一号的凌晨2点执行   CREATE EVENT TOTAL_SEASON_EVENT   ON SCHEDULE EVERY 1 QUARTER STARTS DATE_ADD(DATE_ADD(DATE( CONCAT(YEAR(CURDATE()),'-',ELT(QUARTER(CURDATE()),1,4,7,10),'-',1)),INTERVAL 1 QUARTER),INTERVAL 2 HOUR)   ON COMPLETION PRESERVE ENABLE   DO   BEGIN   CALL SEASON_STAT();   END   每年1月1号凌晨四点执行       CREATE EVENT TOTAL_YEAR_EVENT   ON SCHEDULE EVERY 1 YEAR STARTS DATE_ADD(DATE(CONCAT(YEAR(CURDATE()) + 1,'-',1,'-',1)),INTERVAL 4 HOUR)   ON COMPLETION PRESERVE ENABLE   DO   BEGIN   CALL YEAR_STAT();   END  bitsCN.com

相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板