EVENTS
表格提供關於事件管理員事件的資訊,這些事件在 第 27.5 節,「使用事件排程器」 中討論。
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
值,該值在用於建立事件的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 模式,以及事件執行的模式。有關允許的值,請參閱第 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.5.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']