Documentation Home
MySQL 8.4 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 39.8Mb
PDF (A4) - 39.9Mb
Man Pages (TGZ) - 257.9Kb
Man Pages (Zip) - 364.9Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 Reference Manual  /  ...  /  The INFORMATION_SCHEMA EVENTS Table

28.3.14 INFORMATION_SCHEMA EVENTS 表

EVENTS 表提供了 Event Manager 事件的信息,这些事件在第27.4节,“使用事件调度器”中讨论。

EVENTS 表具有以下列:

  • EVENT_ Catalog

    该事件所属的目录名称。这一值始终是def

  • EVENT_SCHEMA

    该事件所属的架构(数据库)名称。

  • EVENT_NAME

    该事件的名称。

  • DEFINER

    DEFINER子句中指定的账户(通常是事件创建者),以'user_name'@'host_name'格式显示。

  • TIME_ZONE

    事件的时区,这是用于调度事件和在事件执行过程中有效的时区。默认值为SYSTEM

  • EVENT_BODY

    事件中的语句使用的语言。该值始终是SQL

  • EVENT_DEFINITION

    事件的DO子句中的 SQL 语句文本,即由该事件执行的语句。

  • EVENT_TYPE

    事件重复类型, either ONE TIME(瞬时)或RECURRING(重复)。

  • EXECUTE_AT

    对于一次性事件,这是DATETIME值,指定在CREATE EVENT语句中使用的AT子句或最后一次修改事件的ALTER EVENT语句中的值。该列显示的值反映了事件的AT子句中包括的任何INTERVAL值的添加或减少。例如,如果使用ON SCHEDULE AT CURRENT_ TIMESTAMP + '1:6' DAY_HOUR创建事件,并且事件在2018-02-09 14:05:30创建,那么该列中显示的值将是'2018-02-10 20:05:30'。如果事件的时间由EVERY子句而不是AT子句确定(即事件是重复的),那么该列中的值为NULL

  • INTERVAL_VALUE

    对重复事件,执行事件之间等待的时间间隔。对于瞬态事件,该值始终为NULL

  • INTERVAL_FIELD

    用于表示重复事件等待前重复的时间单位。对于瞬态事件,该值始终为NULL

  • SQL_MODE

    在创建或更改事件时有效的 SQL 模式,以及事件执行时的 SQL 模式。请参阅第7.1.11节,“服务器SQL模式”,了解允许的值。

  • STARTS

    重复事件的开始日期和时间。这将以DATETIME值显示,如果没有定义事件的开始日期和时间,则为NULL。对于瞬态事件,这个列始终为NULL。对于包含STARTS子句的重复事件,该列包含相应的DATETIME值。与EXECUTE_AT列一样,这个值将解析任何用于事件的表达式。如果没有影响事件时间的STARTS子句,该列为NULL

  • ENDS

    对于包含ENDS子句的重复事件,这个列包含相应的DATETIME值。与EXECUTE_AT列一样,这个值将任何用于解析的表达式解决。如果没有影响事件时间的ENDS子句,这个列是NULL

  • STATUS

    事件状态。其中之一为ENABLEDDISABLEDREPLICA_ SIDE_ DISABLED(在MySQL 8.2.0之前,这是SLAVESIDE_ DISABLED,现在已弃用)。REPLICA_ SIDE_ DISABLED表示在另一个MySQL服务器上作为复制源创建了事件,并将其复制到当前MySQL服务器,该服务器正在作为副本,但事件目前不在副本上执行。更多信息,请见第19.5.1.16节,“ invoked特性复制”

  • ON_ COMPLETION

    其中之一为PRESERVENOT PRESERVE

  • CREATED

    事件创建的日期和时间。这是一个TIMESTAMP值。

  • LAST_ ALTERED

    事件最后修改的日期和时间。这是一个TIMESTAMP值。如果事件从创建以来未被修改,这个值与CREATED值相同。

  • LAST_EXECUTED

    事件最后执行的日期和时间。这是一个DATETIME值。如果事件从未执行过,这个列是NULL

    LAST_EXECUTED 表示事件开始的时间。因此,ENDS列永远不小于LAST_EXECUTED

  • EVENT_COMMENT

    如果事件有评论,这个值是评论的文本。如果没有评论,这个值为空。

  • ORIGINATOR

    创建事件的 MySQL 服务器 ID;在复制中使用。这個值可能由ALTER EVENT更新到执行该语句的服务器 ID,如果是在复制源上执行。默认值为 0。

  • CHARACTER_SET_CLIENT

    事件创建时的会话值character_set_client系统变量。

  • COLLATION_CONNECTION

    事件创建时的会话值为collation_connection系统变量。

  • DATABASE_COLLATION

    与事件相关的数据库的字符集。

假设用户'jon'@'ghidora'创建了一个名为e_daily的事件,然后使用ALTER EVENT语句修改它,示例如下:

DELIMITER |

CREATE EVENT e_daily
    ON SCHEDULE
      EVERY 1 DAY
    COMMENT 'Saves total number of sessions then clears the table each day'
    DO
      BEGIN
        INSERT INTO site_activity.totals (time, total)
          SELECT CURRENT_TIMESTAMP, COUNT(*)
            FROM site_activity.sessions;
        DELETE FROM site_activity.sessions;
      END |

DELIMITER ;

ALTER EVENT e_daily
    ENABLE;

(注意,可以跨多行添加注释。)

这个用户可以然后运行以下SELECT语句,并获得显示的输出:

mysql> SELECT * FROM INFORMATION_SCHEMA.EVENTS
       WHERE EVENT_NAME = 'e_daily'
       AND EVENT_SCHEMA = 'myschema'\G
*************************** 1. row ***************************
       EVENT_CATALOG: def
        EVENT_SCHEMA: myschema
          EVENT_NAME: e_daily
             DEFINER: jon@ghidora
           TIME_ZONE: SYSTEM
          EVENT_BODY: SQL
    EVENT_DEFINITION: BEGIN
        INSERT INTO site_activity.totals (time, total)
          SELECT CURRENT_TIMESTAMP, COUNT(*)
            FROM site_activity.sessions;
        DELETE FROM site_activity.sessions;
      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_ENGINE_SUBSTITUTION
              STARTS: 2018-08-08 11:06:34
                ENDS: NULL
              STATUS: ENABLED
       ON_COMPLETION: NOT PRESERVE
             CREATED: 2018-08-08 11:06:34
        LAST_ALTERED: 2018-08-08 11:06:34
       LAST_EXECUTED: 2018-08-08 16:06:34
       EVENT_COMMENT: Saves total number of sessions then clears the
                      table each day
          ORIGINATOR: 1
CHARACTER_SET_CLIENT: utf8mb4
COLLATION_CONNECTION: utf8mb4_0900_ai_ci
  DATABASE_COLLATION: utf8mb4_0900_ai_ci

事件信息也可以从 SHOW EVENTS 语句中获取。请参阅第15.7.7.19节,“SHOW EVENTS 语句”。以下语句等效:

SELECT
    EVENT_SCHEMA, EVENT_NAME, DEFINER, TIME_ZONE, EVENT_TYPE, EXECUTE_AT,
    INTERVAL_VALUE, INTERVAL_FIELD, STARTS, ENDS, STATUS, ORIGINATOR,
    CHARACTER_SET_CLIENT, COLLATION_CONNECTION, DATABASE_COLLATION
  FROM INFORMATION_SCHEMA.EVENTS
  WHERE table_schema = 'db_name'
  [AND column_name LIKE 'wild']

SHOW EVENTS
  [FROM db_name]
  [LIKE 'wild']