mysql 事件使用

mysql事件开启

show events;
show variables like 'event_scheduler';
set global event_scheduler=ON;

有时候事件没有开启,需要开启

事件语法

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:
AT timestamp [+ INTERVAL interval] ...
| EVERY interval
[STARTS timestamp [+ INTERVAL interval] ...]
[ENDS timestamp [+ 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}


a.event_name表示事件的名称
b.schedule表示触发点,【AT timestamp】一般用于只执行一次,一般使用时可以使用当前时间加上延后的一段时间,例如:AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR。也可以定义一个时间常量,例如:AT '2006-02-10 23:59:00';【EVERY interval】一般用于周期性执行,可以设定开始时间和结束时间。
c.ON COMPLETION [NOT] PRESERVE,默认是事件到期后会自动删除。如果想保留该事件使用ON COMPLETION PRESERVE;如果不想保留也可以设置ON COMPLETION [NOT] PRESERVE。
d.ENABLE | DISABLE表示设置启用或者禁止这个事件。
e.COMMENT 表示增加注释。

查看删除事件

查看和删除事件
show events;
show create EVENT test2_insert_5_minute;

drop event test2_insert_5_minute;

创建事件案例

示例,每1分钟执行一次

DROP event IF EXISTS job_to;

DELIMITER //
CREATE EVENT job_to 
ON SCHEDULE EVERY 1 MINUTE 
on COMPLETION  PRESERVE
DO 
BEGIN
call PROC_JOB_TO();

END; 
//
DELIMITER ; 

每天定时执行


DROP event IF EXISTS job_trunc;

DELIMITER //
CREATE EVENT job_trunc 
ON SCHEDULE EVERY 1 DAY STARTS '2018-11-19 00:15:00' 
on COMPLETION  PRESERVE
DO 
BEGIN
call PROC_JOB_TRUNC();

END; 
//
DELIMITER ; 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(mysql)