what's the MySQL 事件

  MySQL5.1 版本开始引进 event 概念,MySQL 中的事件(event:时间触发器)是用于执行定时或周期性的任务,类似 Linux 中的 crontab,事件可以精确到秒。通过单独或调用存储过程使用,在某一特定的时间点,触发相关的 SQL 语句或存储过程。事件由一个特定的线程来管理的,也就是所谓的事件调度器,但是事件不能直接调用。 

  总的来说,事件,就是定时任务的管理器。

查看事件调度器是否开启

  事件由一个特定的线程来管理。启用事件调度器后,拥有 SUPER 权限的账户执行 SHOW PROCESSLIST 就可以看到这个线程了。

SHOW VARIABLES LIKE 'event_scheduler';
SELECT @@event_scheduler;
SHOW PROCESSLIST;

 

开启或关闭事件管理器

-- 开启事件调度器
SET GLOBAL event_scheduler = ON;
 
-- 关闭事件调度器
SET GLOBAL event_scheduler = OFF;
 
-- 查看事件调度器状态
SHOW VARIABLES LIKE 'event_scheduler';

注意:如果想要始终开启事件,那么在使用SET GLOBAL开启事件后,还需要在配置文件(Windows系统my.ini、Linux系统my.cnf)中添加 event_scheduler=on 并重启数据库服务。因为如果没有添加,MySQL重启事件后又会回到原来的状态。

 

创建存储过程

  MySQL 事件一般配合 MySQL 存储过程使用,顶一万 MySQL 存储过程后由 MySQL 事件进行触发调用。

存储过程相关知识点链接:https://www.cnblogs.com/zhuminghui/p/12749283.html

 

事件的主要操作

  事件的主要操作有:创建、查询、修改、删除、开启和关闭。

创建事件

语法结构

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;
DEFINER    -- 可选,用于定义事件执行时检查权限的用户
IF NOT EXISTS    -- 可选,用于判断要创建的事件是否存在
EVENT event_name    -- 必选,用于指定事件名,event_name的最大长度为64个字符,如果为指定event_name,则默认为当前的MySQL用户名(不区分大小写)
ON SCHEDULE schedule    -- 必选,用于定义执行的时间和时间间隔
ON COMPLETION [NOT] PRESERVE    -- 可选,用于定义事件是否循环执行,即是一次执行还是永久执行,默认为一次执行,即 NOT PRESERVE
ENABLE | DISABLE | DISABLE ON SLAVE    -- 可选,用于指定事件的一种属性。
                                       -- 其中,关键字ENABLE表示该事件是活动的,也就是调度器检查事件是否必选调用;
                                       -- 关键字DISABLE表示该事件是关闭的,也就是事件的声明存储到目录中,但是调度器不会检查它是否应该调用;
                                       -- 关键字DISABLE ON SLAVE表示事件在从机中是关闭的。如果不指定这三个选择中的任意一个,则在一个事件创建之后,它立即变为活动的。
COMMENT 'comment'    -- 可选,用于定义事件的注释 
DO event_body    -- 必选,用于指定事件启动时所要执行的代码。可以是任何有效的SQL语句、存储过程或者一个计划执行的事件。如果包含多条语句,可以使用BEGIN...END复合结构
参数说明

相关文章:

  • 2022-12-23
  • 2022-01-08
猜你喜欢
  • 2021-09-14
  • 2022-12-23
  • 2021-06-05
  • 2021-08-11
  • 2021-11-27
相关资源
相似解决方案