MySQL 8.0 リファレンスマニュアル


MySQL 8.0 リファレンスマニュアル  /  INFORMATION_SCHEMA テーブル  /  INFORMATION_SCHEMA EVENTS テーブル

26.14 INFORMATION_SCHEMA EVENTS テーブル

EVENTS テーブルには、セクション25.4「イベントスケジューラの使用」 で説明されているイベントマネージャイベントに関する情報が表示されます。

EVENTS テーブルには、次のカラムがあります:

  • EVENT_CATALOG

    イベントが属するカタログの名前。 この値は常に def です。

  • EVENT_SCHEMA

    イベントが属するスキーマ (データベース) の名前。

  • EVENT_NAME

    イベントの名前。

  • DEFINER

    'user_name'@'host_name'形式の、DEFINER 句で指定されたアカウント (多くの場合、イベントを作成したユーザー)。

  • TIME_ZONE

    イベントのタイムゾーン。イベントのスケジュールに使用され、イベントの実行時にイベント内で有効なタイムゾーンです。 デフォルト値は SYSTEM です。

  • EVENT_BODY

    イベント DO 句のステートメントに使用される言語。 値は常に SQL です。

  • EVENT_DEFINITION

    イベント DO 句を構成する SQL ステートメントのテキスト。つまり、このイベントによって実行されるステートメント。

  • EVENT_TYPE

    イベントの繰返しタイプ。ONE TIME (一時) または RECURRING (繰返し)。

  • EXECUTE_AT

    ワンタイムイベントの場合、これは、イベントの作成に使用される CREATE EVENT ステートメントの AT 句、またはイベントを変更した最後の ALTER EVENT ステートメントで指定された DATETIME 値です。 このカラムに表示された値は、イベントの AT 句に含まれた、INTERVAL 値の加算または減算に影響します。 たとえば、イベントが ON SCHEDULE AT CURRENT_TIMESTAMP + '1:6' DAY_HOUR を使用して作成され、イベントが 2018-02-09 の 14:05:30 に作成された場合、カラムに表示される値は '2018-02-10 20:05:30' になります。 イベントのタイミングが AT 句ではなく EVERY 句で決定される場合 (つまり、イベントが繰り返しである場合)、このカラムの値は 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

    イベントステータス。 ENABLEDDISABLEDSLAVESIDE_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

    イベントが関連付けられているデータベースの照合。

メモ

次に示すように、ユーザー'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']

関連キーワード:  SCHEMA, INFORMATION, テーブル, イベント, INNODB, EVENT, カラム, ステートメント, EVENTS, 作成