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
事件状态。其中之一为
ENABLED
、DISABLED
或REPLICA_ SIDE_ DISABLED
(在MySQL 8.2.0之前,这是SLAVESIDE_ DISABLED
,现在已弃用)。REPLICA_ SIDE_ DISABLED
表示在另一个MySQL服务器上作为复制源创建了事件,并将其复制到当前MySQL服务器,该服务器正在作为副本,但事件目前不在副本上执行。更多信息,请见第19.5.1.16节,“ invoked特性复制”。 -
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节,“invoked特性复制”。
假设用户'jon'@'ghidora'
创建了一个名为e_daily
的事件,然后使用ALTER EVENT
语句修改它,示例如下:
Press CTRL+C to copyDELIMITER | 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
语句,并获得显示的输出:
Press CTRL+C to copymysql> 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 语句”。以下语句等效:
Press CTRL+C to copySELECT 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']