Skip to content
xiaoboluo768 edited this page Jun 7, 2020 · 2 revisions
  • 该表提供查询计划任务事件相关的信息
  • 该表是InnoDB引擎临时表
  • 表定义语句
CREATE TEMPORARY TABLE `EVENTS` (
  `EVENT_CATALOG` varchar(64) NOT NULL DEFAULT '',
  `EVENT_SCHEMA` varchar(64) NOT NULL DEFAULT '',
  `EVENT_NAME` varchar(64) NOT NULL DEFAULT '',
  `DEFINER` varchar(93) NOT NULL DEFAULT '',
  `TIME_ZONE` varchar(64) NOT NULL DEFAULT '',
  `EVENT_BODY` varchar(8) NOT NULL DEFAULT '',
  `EVENT_DEFINITION` longtext NOT NULL,
  `EVENT_TYPE` varchar(9) NOT NULL DEFAULT '',
  `EXECUTE_AT` datetime DEFAULT NULL,
  `INTERVAL_VALUE` varchar(256) DEFAULT NULL,
  `INTERVAL_FIELD` varchar(18) DEFAULT NULL,
  `SQL_MODE` varchar(8192) NOT NULL DEFAULT '',
  `STARTS` datetime DEFAULT NULL,
  `ENDS` datetime DEFAULT NULL,
  `STATUS` varchar(18) NOT NULL DEFAULT '',
  `ON_COMPLETION` varchar(12) NOT NULL DEFAULT '',
  `CREATED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `LAST_ALTERED` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `LAST_EXECUTED` datetime DEFAULT NULL,
  `EVENT_COMMENT` varchar(64) NOT NULL DEFAULT '',
  `ORIGINATOR` bigint(10) NOT NULL DEFAULT '0',
  `CHARACTER_SET_CLIENT` varchar(32) NOT NULL DEFAULT '',
  `COLLATION_CONNECTION` varchar(32) NOT NULL DEFAULT '',
  `DATABASE_COLLATION` varchar(32) NOT NULL DEFAULT ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • 字段含义如下(该表中所有字段都为 "MySQL extension" 列)
  • EVENT_CATALOG:此列的值始终为def
  • EVENT_SCHEMA:此事件所属的数据库名称
  • EVENT_NAME:事件的名称
  • DEFINER:创建事件的账户名称
  • TIME_ZONE:事件的时区,是用于调度事件的时区,且在事件执行时生效。默认值为SYSTEM,代表使用system_time_zone系统变量设置的时区
  • EVENT_BODY:用于事件的DO子句中的语句的语言类型,在MySQL 5.7中,总是"SQL"。注意:不要将此列值与早期MySQL版本中存在的同名列(该列先更名为EVENT_DEFINITION列)列混淆
  • EVENT_DEFINITION:构成事件的DO子句的SQL语句的文本。即被事件执行的SQL语句
  • EVENT_TYPE:事件重复类型,一次(transient)或重复(RECURRING)
  • EXECUTE_AT:对于一次性事件,该字段表示创建事件的CREATE EVENT语句中、或修改事件的最后一个ALTER EVENT语句的AT子句中指定的DATETIME值(例如,如果事件是使用"ON SCHEDULE AT CURRENT_TIMESTAMP +'1:6'DAY_HOUR"子句创建,且事件在2018-01-21 14:05:30创建的,则此列中显示的值为'2018-01-22 20:05:30',表示这个一次性事件将在创建时间2018-01-21 14:05:30的基础上再过一天+6小时之后执行)。如果事件的计时由EVERY子句而不是AT子句确定(则表示该事件是一个重复事件),则此列的值为NULL。
  • INTERVAL_VALUE:对于重复事件,此列包含事件的EVERY子句中的数字部分。但对于一次性事件,此列为NULL。
  • INTERVAL_FIELD:对于重复事件,此列包含EVERY子句的单位部分,用于管理事件的时间。此列有效值可能包含“YEAR”,“QUARTER”,“DAY”等值。但对于一次性事件,此列为NULL。
  • SQL_MODE:创建或更改事件时MySQL Server的SQL模式
  • STARTS:对于其定义中包含STARTS子句的重复事件,此列包含相应的DATETIME值。与EXECUTE_AT列类似,此值可解析定义语句中所使用的任何表达式并计算出结果值存放在该列中。如果没有STARTS子句,则此列为NULL
  • ENDS:对于其定义中包含ENDS子句的重复事件,此列包含相应的DATETIME值。与EXECUTE_AT列类似,此值可解析定义语句中所使用的任何表达式并计算出结果值存放在该列中。如果没有ENDS子句,则此列为NULL
  • STATUS:该列包含三个有效值,ENABLED、DISABLED、SLAVESIDE_DISABLED
* SLAVESIDE_DISABLED:表示事件是通过主备复制中的binlog重放方式在从库上创建的,事件运行状态在从库上被关闭
  • ON_COMPLETION:该列包含两个有效值,PRESVEVE、NOT PRESERVE
  • CREATED:创建事件的日期和时间。是一个TIMESTAMP值
  • LAST_ALTERED:上次修改事件的日期和时间。是一个TIMESTAMP值。如果该事件自创建以来从未修改,则此列与CREATED列值相同
  • LAST_EXECUTED:事件上次执行的日期和时间。是一个 DATETIME值。如果事件从未执行,则此列值为NULL。LAST_EXECUTED表示事件是从什么时候开始的。因此,ENDS列的时间值总是大于LAST_EXECUTED
  • EVENT_COMMENT:事件的注释文本信息,如果事件没有注释信息,则该字段为空串
  • ORIGINATOR:创建事件的MySQL Server的server id,用于复制。默认值为0
  • CHARACTER_SET_CLIENT:创建事件时的character_set_client系统变量的会话值
  • COLLATION_CONNECTION:创建事件时的collation_connection系统变量的会话值
  • DATABASE_COLLATION:与事件关联的数据库的排序规则
  • 表内容查询示例
# 先创建一个存放统计数据的表,然后再创建一个事件每天统计sbtest.sbtest1表中的最大自增值,并插入到统计数据表中
## 创建存放统计数据的表
root@localhost : sbtest 05:03:31> create table test_table (id int);
Query OK, 0 rows affected (0.02 sec)

## 创建统计事件
root@localhost : sbtest 05:04:06> DELIMITER $$
root@localhost : sbtest 05:05:28> CREATE EVENT test_event
    ->    ON SCHEDULE
    ->      EVERY 1 DAY
    ->    COMMENT '每天统计sbtest1表中的最大自增值'
    ->    DO
    ->      BEGIN
    -> insert into test_table select max(id) from sbtest1;
    ->      END $$
Query OK, 0 rows affected (0.00 sec)

root@localhost : sbtest 05:05:37> 
root@localhost : sbtest 05:05:37> DELIMITER ;

# 然后在events表中查询事件信息
root@localhost : sbtest 05:05:39> select * from information_schema.events\G;
*************************** 1. row ***************************
      EVENT_CATALOG: def
        EVENT_SCHEMA: sbtest
          EVENT_NAME: test_event
            DEFINER: root@%
          TIME_ZONE: +08:00
          EVENT_BODY: SQL
    EVENT_DEFINITION: BEGIN
insert into test_table select max(id) from sbtest1;
      END
          EVENT_TYPE: RECURRING
          EXECUTE_AT: NULL
      INTERVAL_VALUE: 1
      INTERVAL_FIELD: DAY
            SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
              STARTS: 2018-01-21 17:05:37
                ENDS: NULL
              STATUS: ENABLED
      ON_COMPLETION: NOT PRESERVE
            CREATED: 2018-01-21 17:05:37
        LAST_ALTERED: 2018-01-21 17:05:37
      LAST_EXECUTED: NULL
      EVENT_COMMENT: 每天统计sbtest1表中的最大自增值
          ORIGINATOR: 3306111
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
  DATABASE_COLLATION: utf8_bin
1 row in set (0.00 sec)

# 修改事件
root@localhost : sbtest 05:06:00> ALTER EVENT test_event enable;
Query OK, 0 rows affected (0.01 sec)

# 再次查询events表中的事件信息
root@localhost : sbtest 05:08:56> select * from information_schema.events\G;
*************************** 1. row ***************************
      EVENT_CATALOG: def
        EVENT_SCHEMA: sbtest
          EVENT_NAME: test_event
            DEFINER: root@%
          TIME_ZONE: +08:00
          EVENT_BODY: SQL
    EVENT_DEFINITION: BEGIN
insert into test_table select max(id) from sbtest1;
      END
          EVENT_TYPE: RECURRING
          EXECUTE_AT: NULL
      INTERVAL_VALUE: 1
      INTERVAL_FIELD: DAY
            SQL_MODE: ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
              STARTS: 2018-01-21 17:05:37
                ENDS: NULL
              STATUS: ENABLED
      ON_COMPLETION: NOT PRESERVE
            CREATED: 2018-01-21 17:05:37
        LAST_ALTERED: 2018-01-21 17:08:56
      LAST_EXECUTED: NULL
      EVENT_COMMENT: 每天统计sbtest1表中的最大自增值
          ORIGINATOR: 3306111
CHARACTER_SET_CLIENT: utf8
COLLATION_CONNECTION: utf8_general_ci
  DATABASE_COLLATION: utf8_bin
1 row in set (0.00 sec)
  • PS:查询该表中的事件信息还可以使用show语法 ,如下
# 语法
Syntax:
SHOW EVENTS [{FROM | IN} schema_name]
    [LIKE 'pattern' | WHERE expr]

# 示例(从下面的结果中可以看到,查询到的信息明显少于直接查询events表)
root@localhost : sbtest 05:11:08> show events from sbtest where Name='test_event'\G;
*************************** 1. row ***************************
                  Db: sbtest
                Name: test_event
            Definer: root@%
          Time zone: +08:00
                Type: RECURRING
          Execute at: NULL
      Interval value: 1
      Interval field: DAY
              Starts: 2018-01-21 17:05:37
                Ends: NULL
              Status: ENABLED
          Originator: 3306111
character_set_client: utf8
collation_connection: utf8_general_ci
  Database Collation: utf8_bin
1 row in set (0.00 sec)

上一篇:ENGINES表 |下一篇:FILES表

Clone this wiki locally