• 首页
  • css3教程
  • html5教程
  • jQuery手册
  • vue手册
  • php手册
  • MySQL手册
  • apache手册
  • redis手册
  • EVENTS表

    EVENTS表提供了有关事件管理器事件的信息,将在“使用事件计划程序”中进行讨论。

    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

      对于一次性事件,这是在用于创建事件的语句DATETIMEAT子句中CREATE EVENT或在ALTER EVENT修改事件的最后一条语句的子句中指定的值。此列中显示的值反映INTERVAL事件AT子句中包含的任何值的加法或减法。例如,如果使用创建了一个事件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模式”。

    • STARTS

      重复活动的开始日期和时间。这将显示为一个DATETIME值,NULL如果没有为事件定义开始日期和时间,则显示为一个值。对于瞬态事件,此列始终为NULL。对于定义包含STARTS子句的重复事件,此列包含相应的DATETIME值。与该EXECUTE_AT列一样,此值可解析使用的所有表达式。如果没有STARTS子句影响事件的发生时间,则此列为NULL

    • ENDS

      对于定义包含ENDS子句的重复事件,此列包含相应的DATETIME值。与该EXECUTE_AT列一样,此值可解析使用的所有表达式。如果没有ENDS子句影响事件的发生时间,则此列为NULL

    • STATUS

      事件状态。其中一个ENABLEDDISABLEDSLAVESIDE_DISABLEDSLAVESIDE_DISABLED表示事件的创建发生在另一台充当复制主服务器的MySQL服务器上,并复制到当前充当从服务器的MySQL服务器上,但是该事件当前不在从服务器上执行。有关更多信息,请参见“复制功能”。信息。

    • 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

      与事件关联的数据库的整理。

    注意

    • EVENTS表是非标准INFORMATION_SCHEMA表。
    • 在次EVENTS表中使用事件时区,当前会话时区或UTC显示,如在“事件的元数据”。
    • 有关SLAVESIDE_DISABLED和该ORIGINATOR列的更多信息,请参见“复制功能”。

    假设用户'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语句中也提供事件信息。请参见“ 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']