文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  INFORMATION_SCHEMA EVENTS 表格

28.3.14 INFORMATION_SCHEMA EVENTS 表格

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

    事件狀態。可以是 ENABLEDDISABLEDREPLICA_SIDE_DISABLED (在 MySQL 8.2.0 之前,此為 SLAVESIDE_DISABLED,現已棄用)。REPLICA_SIDE_DISABLED 表示事件的建立發生在另一個充當複製來源的 MySQL 伺服器上,並複製到目前充當複本的 MySQL 伺服器,但事件目前未在複本上執行。如需更多資訊,請參閱第 19.5.1.16 節「呼叫功能的複製」

  • ON_COMPLETION

    兩個值之一:PRESERVENOT 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

    與事件相關聯的資料庫定序。

注意事項

範例

假設使用者 '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']