Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

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

28.3.14 信息架构 EVENTS 表

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

EVENTS 表具有以下列:

  • EVENT_CATALOG

    事件所属的目录名称。该值始终为 def

  • EVENT_SCHEMA

    事件所属的模式(数据库)名称。

  • EVENT_NAME

    事件名称。

  • DEFINER

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

  • TIME_ZONE

    事件的时区,该时区用于调度事件并在事件执行时生效。默认值为 SYSTEM

  • EVENT_BODY

    事件的语言,用于事件的 DO 子句。该值始终为 SQL

  • EVENT_DEFINITION

    事件的 SQL 语句,用于事件的 DO 子句。

  • EVENT_TYPE

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

  • EXECUTE_AT

    对于瞬时事件,该值是事件的 DATETIME 值,指定在 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'。如果事件的 timing 由 EVERY 子句而不是 AT 子句确定(即事件是重复的),那么该列中的值为 NULL

  • INTERVAL_VALUE

    对于重复事件,该值是事件之间的间隔数。对于瞬时事件,该值始终为 NULL

  • INTERVAL_FIELD

    重复事件的时间单位,该值用于事件之间的间隔。对于瞬时事件,该值始终为 NULL

  • SQL_MODE

    事件创建或修改时的 SQL 模式,该模式在事件执行时生效。有关允许的值,请参阅 第 7.1.11 节,“服务器 SQL 模式”

  • STARTS

    重复事件的开始日期和时间,以 DATETIME 值显示,该值为 NULL 如果事件没有定义开始日期和时间。对于瞬时事件,该列始终为 NULL。对于重复事件,该值包含事件的 DATETIME 值,类似于 EXECUTE_AT 列。

  • 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']