Welcome 微信登录

首页 / 数据库 / MySQL / MySQL event的简单使用

—— 查看event的create信息SHOW CREATE event event_test;
——查看某个schema下的event状态SELECT event_schema,event_name,STATUS FROM information_schema.events WHERE event_schema = "xxxx" ——查看event功能是否开启mysql> show variables like "%event%";+-----------------+-------+| Variable_name | Value |+-----------------+-------+| event_scheduler | OFF |+-----------------+-------+1 row in set (0.00 sec) 开启event功能,可设置为ON|1mysql> set global event_scheduler=on;Query OK, 0 rows affected (0.00 sec) mysql> show variables like "%event%";+-----------------+-------+| Variable_name | Value |+-----------------+-------+| event_scheduler | ON    |+-----------------+-------+1 row in set (0.00 sec) -- 创建测试表CREATE TABLE t(X DATETIME);
 -- 创建一个测试的proc,为了向测试表中插入系统时间DELIMITER $$DROP PROCEDURE IF EXISTS e_test $$CREATE PROCEDURE e_test()BEGININSERT INTO t VALUES(NOW());END $$DELIMITER ; -- 创建事件--每隔十秒自动调用e_test()存储过程CREATE EVENT IF NOT EXISTS event_testON SCHEDULE EVERY 10 SECONDON COMPLETION PRESERVEDO CALL e_test();  过会儿select测试表中的数据,如下:
 
-- 开启事件 ALTER EVENT event_test ON COMPLETION PRESERVE ENABLE; -- 关闭事件 ALTER EVENT event_test ON COMPLETION PRESERVE DISABLE;  一些例子:从现在开始每隔九天定时执行CREATE EVENT EVENT1ON SCHEDULE EVERY 9 DAY STARTS NOW()ON COMPLETION PRESERVE ENABLEDOBEGINCALL TOTAL();END 
每个月的一号凌晨1 点执行CREATE EVENT EVENT2 ON SCHEDULE EVERY 1 MONTH STARTSDATE_ADD(DATE_ADD(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY), INTERVAL 1 MONTH),INTERVAL 1 HOUR)ON COMPLETION PRESERVE ENABLEDOBEGINCALL STAT();END 每个季度一号的凌晨2点执行CREATE EVENT TOTAL_SEASON_EVENTON 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 ENABLEDOBEGINCALL SEASON_STAT();END 
每年1月1号凌晨四点执行CREATE EVENT TOTAL_YEAR_EVENTON SCHEDULE EVERY 1 YEAR STARTS DATE_ADD(DATE(CONCAT(YEAR(CURDATE()) + 1,"-",1,"-",1)),INTERVAL 4 HOUR)ON COMPLETION PRESERVE ENABLEDO BEGIN CALL YEAR_STAT(); END本文永久更新链接地址