Sintaxis

CREATE [OR REPLACE]
    [DEFINER = { user | CURRENT_USER | role | CURRENT_ROLE }]
    EVENT 
    [IF NOT EXISTS]
    event_name    
    ON SCHEDULE schedule
    [ON COMPLETION [NOT] PRESERVE]
    [ENABLE | DISABLE | DISABLE ON SLAVE]
    [COMMENT 'comment']
    DO sql_statement;

schedule:
    AT timestamp [+ INTERVAL interval] ...
  | EVERY interval 
    [STARTS timestamp [+ INTERVAL interval] ...] 
    [ENDS timestamp [+ INTERVAL interval] ...]

interval:
    quantity {YEAR | QUARTER | MONTH | DAY | HOUR | MINUTE |
              WEEK | SECOND | YEAR_MONTH | DAY_HOUR | DAY_MINUTE |
              DAY_SECOND | HOUR_MINUTE | HOUR_SECOND | MINUTE_SECOND}

Descripción

Esta declaración crea y programa un nuevo evento. Requiere el EVENT privilegio para el esquema en el que se creará el evento.

Los requisitos mínimos para una declaración CREATE EVENT válida son los siguientes:

  • Las palabras clave CREATE EVENT más un nombre de evento, que identifica de forma exclusiva el evento en el esquema actual. (Antes de MySQL 5.1.12, el nombre del evento debía ser único solo entre los eventos creados por el mismo usuario en una base de datos determinada).
  • Un ON SCHEDULE cláusula, que determina cuándo y con qué frecuencia se ejecuta el evento.
  • A DO cláusula, que contiene la instrucción SQL que debe ejecutar un evento.

Aquí hay un ejemplo de un mínimo CREATE EVENT declaración:

CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      UPDATE myschema.mytable SET mycol = mycol + 1;

La declaración anterior crea un evento llamado myevent. Este evento se ejecuta una vez una hora después de su creación ejecutando una instrucción SQL que incrementa el valor de la columna mycol de la tabla myschema.mytable en 1.

El event_name debe ser un identificador MariaDB válido con una longitud máxima de 64 caracteres. Puede delimitarse mediante marcas inversas y puede calificarse con el nombre de un esquema de base de datos. Un evento está asociado con un usuario MariaDB (el definidor) y un esquema, y ​​su nombre debe ser único entre los nombres de eventos dentro de ese esquema. En general, las reglas que gobiernan los nombres de los eventos son las mismas que las de los nombres de las rutinas almacenadas. Consulte Nombres de identificadores.

Si no se indica ningún esquema como parte de event_name, se asume el esquema predeterminado (actual).

Para obtener identificadores válidos para usar como nombres de eventos, consulte Nombres de identificadores.

O REEMPLAZAR

los OR REPLACE la cláusula fue incluida en MariaDB 10.1.4. Si se utiliza y el evento ya existe, en lugar de devolver un error, el evento existente se eliminará y se reemplazará por el evento recién definido.

SI NO EXISTE

Si el IF NOT EXISTS se utiliza una cláusula, MariaDB devolverá una advertencia en lugar de un error si el evento ya existe. No se puede utilizar junto con OR REPLACE.

EN LA FECHA PREVISTA

los ON SCHEDULE La cláusula se puede utilizar para especificar cuándo debe activarse el evento.

A

Si desea ejecutar el evento solo una vez (evento único), puede usar el AT palabra clave, seguida de una marca de tiempo. Si utiliza CURRENT_TIMESTAMP, el evento actúa tan pronto como se crea. Para su comodidad, puede agregar uno o más intervalos a esa marca de tiempo. También puede especificar una marca de tiempo en el pasado, de modo que el evento se almacene pero no se active, hasta que lo modifique mediante ALTER EVENT.

El siguiente ejemplo muestra cómo crear un evento que se activará mañana a una hora determinada:

CREATE EVENT example
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY + INTERVAL 3 HOUR
DO something;

También puede especificar que un evento debe activarse en un intervalo regular (evento recurrente). En tales casos, utilice el EVERY cláusula seguida del intervalo.

Si un evento es recurrente, puede especificar cuándo debe ocurrir la primera ejecución a través del STARTS cláusula y un tiempo máximo para la última ejecución a través de la ENDS cláusula. STARTS y ENDS las cláusulas van seguidas de una marca de tiempo y, opcionalmente, uno o más intervalos. los ENDS La cláusula puede especificar una marca de tiempo en el pasado, de modo que el evento se almacene pero no se ejecute hasta que lo modifique mediante ALTER EVENT.

En el siguiente ejemplo, el próximo mes se activará un evento recurrente cada hora durante una semana:

CREATE EVENT example
ON SCHEDULE EVERY 1 HOUR
STARTS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH + INTERVAL 1 WEEK
DO some_task;

Los intervalos consisten en una cantidad y una unidad de tiempo. Las unidades de tiempo son las mismas que se usan para otras etapas y funciones de tiempo, excepto que no puede usar microsegundos para eventos. Para unidades de tiempo simples, como HOUR o MINUTE, la cantidad es un número entero, por ejemplo, ’10 MINUTOS ‘. Para unidades de tiempo compuestas, como HOUR_MINUTE o HOUR_SECOND, la cantidad debe ser una cadena con todos los valores simples involucrados y sus separadores, por ejemplo, ‘2:30’ o ‘2:30:30’.

EN LA TERMINACIÓN [NOT] PRESERVAR

los ON COMPLETION La cláusula se puede utilizar para especificar si el evento debe eliminarse después de su última ejecución (es decir, después de su AT o ENDS la marca de tiempo ha pasado). De forma predeterminada, los eventos se eliminan cuando caducan. Para indicar explícitamente que este es el comportamiento deseado, puede usar ON COMPLETION NOT PRESERVE. En cambio, si desea que se conserve el evento, puede usar ON COMPLETION PRESERVE.

En tu especificas ON COMPLETION NOT PRESERVEy especificas una marca de tiempo en el pasado para AT o ENDS cláusula, el evento se cancelará inmediatamente. En tales casos, recibirá una Nota 1558: “El tiempo de ejecución del evento está en el pasado y ON COMPLETATION NOT PRESERVE está configurado. El evento se eliminó inmediatamente después de la creación”.

ACTIVAR / DESACTIVAR / DESACTIVAR EN ESCLAVO

Los eventos son ENABLEd por defecto. Si desea evitar que MariaDB ejecute un evento, puede especificar DISABLE. Cuando esté listo para ser activado, puede habilitarlo usando ALTER EVENT. Otra opcion es DISABLE ON SLAVE, que indica que se creó un evento en un maestro y se ha replicado en el esclavo, lo que impide que se ejecute el evento. Si DISABLE ON SLAVE está configurado específicamente, el evento no se ejecutará.

COMENTARIO

los COMMENT La cláusula se puede utilizar para establecer un comentario para el evento. La longitud máxima de los comentarios es de 64 caracteres. El comentario es una cadena, por lo que se debe citar. Para ver los comentarios de los eventos, puede consultar la tabla INFORMATION_SCHEMA.EVENTS (la columna se llama EVENT_COMMENT).

Ejemplos de

Mínimo CREATE EVENT declaración:

CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      UPDATE myschema.mytable SET mycol = mycol + 1;

Un evento que se activará mañana a una hora determinada:

CREATE EVENT example
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY + INTERVAL 3 HOUR
DO something;

El próximo mes se activará un evento recurrente cada hora durante una semana:

CREATE EVENT example
ON SCHEDULE EVERY 1 HOUR
STARTS CURRENT_TIMESTAMP + INTERVAL 1 MONTH
ENDS CURRENT_TIMESTAMP + INTERVAL 1 MONTH + INTERVAL 1 WEEK
DO some_task;

O REEMPLAZAR y SI NO EXISTE:

CREATE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      UPDATE myschema.mytable SET mycol = mycol + 1;
ERROR 1537 (HY000): Event 'myevent' already exists

CREATE OR REPLACE EVENT myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      UPDATE myschema.mytable SET mycol = mycol + 1;;
Query OK, 0 rows affected (0.00 sec)

CREATE EVENT IF NOT EXISTS myevent
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
    DO
      UPDATE myschema.mytable SET mycol = mycol + 1;
Query OK, 0 rows affected, 1 warning (0.00 sec)

 SHOW WARNINGS;
+-------+------+--------------------------------+
| Level | Code | Message                        |
+-------+------+--------------------------------+
| Note  | 1537 | Event 'myevent' already exists |
+-------+------+--------------------------------+

Ver también

  • Nombres de identificadores

  • Resumen de eventos

  • MOSTRAR CREAR EVENTO

  • ALTER EVENTO

  • EVENTO DE GOTA

El contenido reproducido en este sitio es propiedad de sus respectivos dueños, y MariaDB no revisa este contenido con anticipación. Los puntos de vista, la información y las opiniones expresadas por este contenido no representan necesariamente las de MariaDB o de cualquier otra parte.