目录
1 创建事件
1.1 检查数据库事件是否开启
1.2 开启任务(事件)
1.3 关闭事件
1.4 语法
1.4.1 参数取值
1.4.2 参数定义
1.5 开启事件
1.6 关闭事件
1.7 删除事件
1.8 案例
如果 event_scheduler 等于 ON 表示开启
SELECT @@event_scheduler; SHOW VARIABLES LIKE 'event_scheduler';CREATE [DEFINER = { user | CURRENT_USER }] EVENT [IF NOT EXISTS] event_name ON SCHEDULE schedule [ON COMPLETION [NOT] PRESERVE] [ENABLE | DISABLE | DISABLE ON SLAVE] [COMMENT 'comment'] DO event_body;
schedule和interval参数可取的值:
-- schedule参数可取的值: schedule: AT timestamp [+ INTERVAL interval] ... | EVERY interval [STARTS timestamp [+ INTERVAL interval] ...] [ENDS timestamp [+ INTERVAL interval] ...] -- interval参数可取的值: interval: quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE | WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}DEFINER: 定义事件执行的时候检查权限的用户。ON SCHEDULE schedule: 定义执行的时间和时间间隔。ON COMPLETION [NOT] PRESERVE: 定义事件是一次执行还是永久执行,默认为一次执行,即NOT PRESERVE:计划任务执行完毕后自动drop该事件,ON COMPLETION PRESERVE则不会drop掉。ENABLE | DISABLE | DISABLE ON SLAVE: 定义事件创建以后是开启还是关闭,以及在从上关闭。如果是从服务器自动同步主上的创建事件的语句的话,会自动加上DISABLE ON SLAVE。COMMENT 'comment': 定义事件的注释。
事件一: 每隔三秒钟插入一条数据
-- 创建一个每隔3秒往test表中插入一条数据的事件 CREATE EVENT IF NOT EXISTS e_test_1 ON SCHEDULE EVERY 3 SECOND ON COMPLETION PRESERVE DO INSERT INTO test(id,t1) VALUES(NULL,NOW());事件二:清空test表数据
-- 创建一个10分钟后清空test表数据的事件 CREATE EVENT IF NOT EXISTS e_test_2 ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE DO TRUNCATE TABLE test;事件三:call调用存储过程
-- 调用存储过程 -- 创建过程 CREATE PROCEDURE pro_test() BEGIN INSERT INTO test(id,t1,id2) VALUES(NULL,NOW(),'1000000'); END -- 调用过程 CREATE EVENT IF NOT EXISTS e_test_3 ON SCHEDULE EVERY 3 SECOND ON COMPLETION PRESERVE DO CALL pro_test();