MySQL事件-小结篇

MySQL 事件是按调度表运行的任务。事件调度器用于周期性执行某些特定任务,可以精确到每秒钟执行一个任务。事件与触发器都是在某些事情发生的时候启动,不同之处在于事件基于特定时间周期来触发执行某些任务;触发器基于某个表所产生的事件来触发。

  1. 查看事件状态
    在开启或关闭事件之前,可以先查看当前MySQL事件的状态:
    方法1:
    show variables like ‘event_scheduler’;
    方法2:
    select @@event_scheduler;
    在这里插入图片描述
    ON 代表开启,OFF代表未开启。

  2. 开启事件
    可通过如下方法开启事件:
    set global event_scheduler = ON;
    set @@global.event_scheduler = ON;
    set global event_scheduler = 1;
    set @@global.event_scheduler = 1;

  3. 关闭事件
    可通过如下方法关闭事件:
    set global event_scheduler = OFF;
    set @@global.event_scheduler = OFF;
    set global event_scheduler = 0;
    set @@global.event_scheduler = 0;

  4. 创建事件
    创建事件语法:
    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. 查看事件
    方法1:
    show events;
    方法2:
    select * from information_schema.events where event_name=‘事件名’;
    在这里插入图片描述
    在这里插入图片描述
    此处,发现只有event_min事件,而没有event_now,原因是event_now事件中,默认
    on completion not preserve,该事件一次执行,执行完毕该事件即自动删除。

  2. 删除事件
    语法:
    drop event 事件名;
    在这里插入图片描述

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页