# 26.3.14 信息_SCHEMA 事件表

活动表提供有关事件管理器事件的信息,在第 25.4 节,“使用事件调度程序”.

活动表有这些列:

  • 事件目录

    事件所属目录的名称。这个值总是定义.

  • EVENT_SCHEMA

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

  • EVENT_NAME

    事件的名称。

  • 定义者

    中命名的帐户定义者子句(通常是创建事件的用户),在'*用户名*'@'*主机名*'格式。

  • 时区

    事件时区,这是用于安排事件的时区,并且在事件执行时在事件内有效。默认值为系统.

  • EVENT_BODY

    事件中的陈述所使用的语言条款。价值永远是SQL.

  • EVENT_DEFINITION

    构成事件的 SQL 语句的文本条款;换句话说,这个事件执行的语句。

  • 事件类型

    事件重复类型,要么一度(瞬态)或再次发生的(重复)。

  • 执行_AT

    对于一次性事件,这是约会时间中指定的值的条款创建事件用于创建事件或最后一个事件的语句改变事件修改事件的声明。此列中显示的值反映了任何加法或减法间隔包含在事件中的值条款。例如,如果一个事件是使用按计划在 CURRENT_TIMESTAMP + '1:6' DAY_HOUR,并且该事件是在 2018-02-09 14:05:30 创建的,此列中显示的值为'2018-02-10 20:05:30'.如果事件的时间是由一个每一个子句而不是子句(即,如果事件重复发生),则该列的值为空值.

  • INTERVAL_VALUE

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

  • INTERVAL_FIELD

    用于重复事件在重复之前等待的间隔的时间单位。对于瞬态事件,该值始终为空值.

  • SQL_MODE

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

  • 开始

    重复事件的开始日期和时间。这显示为约会时间值,并且是空值如果没有为事件定义开始日期和时间。对于瞬态事件,此列始终空值.对于定义包括开始子句,此列包含相应的约会时间价值。与执行_AT列,此值解析使用的任何表达式。如果没有开始影响事件发生时间的条款,此栏为空值

  • 结束

    对于定义包括结束子句,此列包含相应的约会时间价值。与执行_AT列,此值解析使用的任何表达式。如果没有结束影响事件发生时间的条款,此栏为空值.

  • 状态

    事件状态。之一已启用,已禁用, 要么SLAVESIDE_DISABLED.SLAVESIDE_DISABLED表示事件的创建发生在另一个充当复制源的 MySQL 服务器上,并复制到当前充当副本的 MySQL 服务器上,但该事件当前未在副本上执行。有关详细信息,请参阅第 17.5.1.16 节,“调用功能的复制”.信息。

  • 在完成的时候

    两个值之一保存要么不保留.

  • 已创建

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

  • LAST_ALTERED

    上次修改事件的日期和时间。这是一个时间戳价值。如果事件自创建以来未修改,则此值与已创建价值。

  • LAST_EXECUTED

    上次执行事件的日期和时间。这是一个约会时间价值。如果事件从未执行,则此列是空值.

    LAST_EXECUTED指示事件何时开始。结果,结束列从不小于LAST_EXECUTED.

  • EVENT_COMMENT

    评论的文本,如果事件有的话。如果不是,则此值为空。

  • 鼻祖

    创建事件的 MySQL 服务器的服务器 ID;用于复制。该值可以通过以下方式更新改变事件如果在复制源上执行,则指向发生该语句的服务器的服务器 ID。默认值为 0。

  • CHARACTER_SET_CLIENT

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

  • COLLATION_CONNECTION

    会话值collat​​ion_connection创建事件时的系统变量。

  • DATABASE_COLLATION

    与事件关联的数据库的排序规则。

# 笔记

# 例子

假设用户'乔恩'@'吉多拉'创建一个名为的事件电子日报, 然后在几分钟后使用改变事件声明,如下所示:

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;

(请注意,注释可以跨越多行。)

然后该用户可以运行以下命令选择语句,并获得显示的输出:

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

活动信息也可从展会活动陈述。看第 13.7.7.18 节,“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']