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 PRESERVE
y 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 ENABLE
d 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.