EVENTS表提供了有关事件管理器事件的信息,将在 第24.4节“使用事件调度程序”中进行讨论。
该EVENTS表包含以下列:
EVENT_CATALOG
事件所属的目录的名称。此值始终为def。
EVENT_SCHEMA
事件所属的架构(数据库)的名称。
EVENT_NAME
事件的名称。
DEFINER
在DEFINER子句中命名的帐户(通常是创建事件的用户), 格式。 'user_name'@'host_name'
TIME_ZONE
事件时区,它是用于安排事件的时区,并且在事件执行时有效。默认值为SYSTEM。
EVENT_BODY
事件DO子句中的语句所使用的语言 。该值始终为 SQL。
EVENT_DEFINITION
组成事件DO子句的SQL语句的文本 ;换句话说,此事件执行的语句。
EVENT_TYPE
事件重复类型,ONE TIME (瞬态)或RECURRING(重复)。
EXECUTE_AT
对于一次性事件,这是在用于创建事件的语句DATETIME的AT子句中CREATE EVENT或在ALTER EVENT修改事件的最后一条语句的子句中 指定的 值 。此列中显示的值反映INTERVAL事件AT子句中包含的任何值 的加法或减法。例如,如果使用创建事件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模式。有关允许的值,请参见第5.1.11节“服务器SQL模式”。
STARTS
重复活动的开始日期和时间。这将显示为一个DATETIME值,NULL如果未定义事件的开始日期和时间,则显示为一个值。对于瞬态事件,此列始终为NULL。对于定义包含STARTS子句的重复事件,此列包含相应的 DATETIME值。与该 EXECUTE_AT列一样,此值可解析使用的所有表达式。如果没有STARTS 子句影响事件的发生时间,则此列为 NULL
ENDS
对于定义包含ENDS子句的重复事件 ,此列包含相应的DATETIME值。与该EXECUTE_AT列一样,此值可解析使用的所有表达式。如果没有 ENDS子句影响事件的发生时间,则此列为NULL。
STATUS
事件状态。其中一个ENABLED, DISABLED或 SLAVESIDE_DISABLED。 SLAVESIDE_DISABLED表示事件的创建发生在另一台充当复制主服务器的MySQL服务器上,并复制到当前充当从服务器的MySQL服务器上,但是该事件当前不在从服务器上执行。有关更多信息,请参见第17.5.1.16节“调用功能的复制”。信息。
ON_COMPLETION
两个值之一PRESERVE或 NOT 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
与事件关联的数据库的整理。
笔记
EVENTS是非标准 INFORMATION_SCHEMA表。
在次EVENTS表中使用事件时区,当前会话时区或UTC显示,如在 第24.4.4节,“事件的元数据”。
有关SLAVESIDE_DISABLED和 ORIGINATOR列的更多信息 ,请参见 第17.5.1.16节“调用功能的复制”。
例
假设用户'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语句中 也提供事件信息 。请参见 第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']