概述
MySQL 事件是按调度表运行的任务。事件调度器用于周期性执行某些特定任务,可以精确到每秒钟执行一个任务。事件与触发器都是在某些事情发生的时候启动,不同之处在于事件基于特定时间周期来触发执行某些任务;触发器基于某个表所产生的事件来触发。
-
查看事件状态
在开启或关闭事件之前,可以先查看当前MySQL事件的状态:
方法1:
show variables like ‘event_scheduler’;
方法2:
select @@event_scheduler;
ON 代表开启,OFF代表未开启。 -
开启事件
可通过如下方法开启事件:
set global event_scheduler = ON;
set @@global.event_scheduler = ON;
set global event_scheduler = 1;
set @@global.event_scheduler = 1; -
关闭事件
可通过如下方法关闭事件:
set global event_scheduler = OFF;
set @@global.event_scheduler = OFF;
set global event_scheduler = 0;
set @@global.event_scheduler = 0; -
创建事件
创建事件语法:
create event [if not exists] event_name
on schedule schedules
[on completion [not] preserve]
[enable | disable | disable on slave]
[comment ‘comment’]
do event_body;其中,
schedules语法:
at timestamp [+ INTERVAL interval] …
| EVERY interval
[STARTS timestamp [+ INTERVAL interval]…]
[ENDS timestamp [+ INTERVAL interval] …]
interval语法:
n {YEAR | QUARTER | MONTH | DAY | HOUR| MINUTE |WEEK | SECOND | YEAR_MONTH |DAY_HOUR |DAY_MINUTE |DAY_SECOND| HOUR_MINUTE |HOUR_SECOND| MINUTE_SECOND}
n指时间间隔。另外,
on completion [not] preserve定义事件是一次执行还是永久执行,默认not preserve一次执行。
enable | disable | disable on slave定义事件创建以后是开启还是关闭。默认enable。
(1)准备数据表t1,创建事件event_now,向t1中插入数据。
create table t1(a int, b int);
delimiter $$
create event event_at on schedule at now() do
begin
insert into t1 values(1, 10);
end $$
delimiter ;
随后,查询t1表中数据
(2)创建一个事件event_min, 设定于2021-2-19 18:08:00时开始每分钟向表t1插入一条记录。
delimiter $$
create event event_min on schedule every 1 minute starts '2021-2-19 18:08:00'
on completion not preserve enable do
begin
insert into t1 values(2, 20);
end $$
delimiter ;
查看t1中的数据,发现每隔1分钟,表中会插入一条数据。
-
查看事件
方法1:
show events;
方法2:
select * from information_schema.events where event_name=‘事件名’;
此处,发现只有event_min事件,而没有event_now,原因是event_now事件中,默认
on completion not preserve,该事件一次执行,执行完毕该事件即自动删除。 -
删除事件
语法:
drop event 事件名;
最后
以上就是爱笑野狼为你收集整理的MySQL事件-小结篇的全部内容,希望文章能够帮你解决MySQL事件-小结篇所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复