EVENTS
表提供有关事件管理器事件的信息,这些事件在 第 27.4 节“使用事件调度程序” 中讨论。
EVENTS
表包含以下列:
EVENT_CATALOG
事件所属目录的名称。此值始终为
def
。EVENT_SCHEMA
事件所属模式(数据库)的名称。
EVENT_NAME
事件的名称。
DEFINER
DEFINER
子句中指定的帐户(通常是创建事件的用户),格式为'
。用户名
'@'主机名
'TIME_ZONE
事件时区,用于调度事件并在事件执行期间生效。默认值为
SYSTEM
。EVENT_BODY
事件
DO
子句中语句使用的语言。该值始终为SQL
。EVENT_DEFINITION
构成事件
DO
子句的 SQL 语句的文本;换句话说,就是此事件执行的语句。EVENT_TYPE
事件重复类型,可以是
ONE TIME
(瞬态)或RECURRING
(重复)。EXECUTE_AT
对于一次性事件,这是用于创建事件的
CREATE EVENT
语句或修改事件的最后一个ALTER EVENT
语句的AT
子句中指定的DATETIME
值。此列中显示的值反映了事件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
事件状态。可以是
ENABLED
、DISABLED
或REPLICA_SIDE_DISABLED
(在 MySQL 8.2.0 之前,此值为SLAVESIDE_DISABLED
,现已弃用)。REPLICA_SIDE_DISABLED
表示事件的创建发生在另一个充当复制源的 MySQL 服务器上,并复制到当前充当副本的 MySQL 服务器上,但该事件目前未在副本上执行。有关详细信息,请参见 第 19.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 显示,如 第 27.4.4 节“事件元数据” 中所述。有关
REPLICA_SIDE_DISABLED
和ORIGINATOR
列的更多信息,请参见 第 19.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
语句中获取。请参见 第 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']