mysql总结-event事件
简介
event即时间触发器,用于在特定时间或时间间隔,触发相关的SQL语句或存储过程。
使用
开启/关闭
查看开启状态:SHOW VARIABLES LIKE 'event_scheduler';

MySQL 5.7 中默认值是 off,MySQL 8.0 中默认值是 on
设置方式:
命令配置(mysql重启后恢复成默认值):以下任意一条都可以开启
SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;
以下任意一条都可以关闭(当你设定事件计划为0或OFF,即关闭事件计划进程的时候,不会有新的事件执行,但现有的正在运行的事件会执行到完毕。)
SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;
配置文件配置(永久有效):
MySQL 配置文件 my.cnf,找到 [mysqld] 配置项,添加一行:event_scheduler=ON
查看定义的事件
查看特定数据库的事件
use xgss;
SHOW EVENTS;
show events语法
SHOW EVENTS
[{FROM | IN} schema_name]
[LIKE 'pattern' | WHERE expr]
查看所有定义的事件:
select * from information_schema.events;
查看事件内容
SHOW CREATE EVENT event_name;
事件内容编写
CREATE DEFINER=`root`@`%` EVENT `create_xgss` ON SCHEDULE EVERY 1 DAY STARTS '2022-02-16 08:07:03' ON COMPLETION NOT PRESERVE ENABLE COMMENT '每天执行一次,创建xgss表' DO CALL create_xgss_function
如上是定义了一个事件从2022-02-16 08:07:03开始每天执行一次存储过程create_xgss_function
CREATE
[DEFINER = user]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'string']
DO action;
其中,event_name是事件的名称,schedule是事件的调度时间表达式(可以指定事件的触发时间和重复间隔),action是事件要执行的SQL语句或存储过程。
DEFINER用于指定所属用户,默认是当前用户
IF NOT EXISTS 可选,代表如果不存在进行创建,存在就不进行创建
ON COMPLETION [NOT] PRESERVE 可选,代表执行完是否保留,默认不保留(执行完毕后自动drop该事件),如果事件每天都跑,即使设置的是不保留,计划任务执行完毕后也不会自动drop该事件。
ENABLE | DISABLE | DISABLE ON SLAVE: 定义事件创建以后是开启还是关闭,以及在从上关闭。如果是从服务器自动同步主上的创建事件的语句的话,会自动加上DISABLE ON SLAVE。默认是ENABLE
COMMENT 'string' 可选,备注信息
shedule表达式的编写
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}
修改事件
修改事件的内容
ALTER
[DEFINER = user]
EVENT event_name
[ON SCHEDULE schedule]
[ON COMPLETION [NOT] PRESERVE]
[RENAME TO new_event_name]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'string']
[DO event_body]
修改事件状态:
alter event event_name(事件名称) ENABLE/DISABLE/DISABLE ON SLAVE;
重命名
ALTER EVENT myevent
RENAME TO yourevent;
移动数据库
ALTER EVENT olddb.myevent
RENAME TO newdb.myevent;
删除事件
drop event event_name;

浙公网安备 33010602011771号