Los eventos de MySQL son tareas que se ejecutan de acuerdo con un cronograma. Cuando crea un evento, crea un objeto de base de datos con nombre que contiene una o más sentencias SQL listas para ejecutarse, comenzando y terminando, en uno o más intervalos regulares de fecha y hora. Similar al Task Scheduler
en Windowso crontab
en UNIX.
Características y propiedades
- Un evento se identifica únicamente por su nombre y el esquema al que está asignado.
- Realizar una acción específica según un cronograma una vez o recurrente.
- Importe y guarde archivos desde GitHub®, Dropbox®, Google Drive® y One Drive®.
- Arrastre y suelte archivos Markdown y HTML en Dillinger.
- Exporte documentos como Markdown, HTML y PDF.
En primer lugar, debe validar el estado del programador de eventos. Un subproceso del programador de eventos especiales ejecuta eventos. Cuando se ejecuta, los usuarios pueden ver el hilo del programador de eventos y su estado actual si los usuarios tienen el privilegio de proceso en la salida de SHOW PROCESSLIST
.
Ejemplo
mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: root
Host: localhost
db: NULL
Command: Query
Time: 0
State: NULL
Info: show processlist
*************************** 2. row ***************************
Id: 2
User: event_scheduler
Host: localhost
db: NULL
Command: Daemon
Time: 3
State: Waiting for next activation
Info: NULL
2 rows in set (0.00 sec)
Si el programador de eventos no está habilitado, configure el event_scheduler systemvariable para habilitarlo e iniciarlo:
SET GLOBAL event_scheduler = ON;
SET @@GLOBAL.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@GLOBAL.event_scheduler = 1;
Del mismo modo, configure el event_scheduler variable del sistema para deshabilitarla o apagarla:
SET GLOBAL event_scheduler = OFF;
SET @@GLOBAL.event_scheduler = OFF;
SET GLOBAL event_scheduler = 0;
SET @@GLOBAL.event_scheduler = 0;
Sintaxis de eventos
La sentencia CREATE EVENT crea un nuevo evento. Esta es la sintaxis básica de la sentencia CREATE EVENT:
CREATE EVENT [IF NOT EXIST] event_name
ON SCHEDULE schedule
DO
event_body
Si el evento es un evento de una sola vez, use:
AT timestamp [+ INTERVAL]
Si el evento es un evento recurrente, use:
EVERY interval STARTS timestamp [+INTERVAL] ENDS timestamp [+INTERVAL]
Ejemplo:
CREATE EVENT [IF NOT EXIST] test_event
ON SCHEDULE EVERY 10 SECONDS
DO
INSERT INTO database VALUES (now());
Resultados:
1 2021-02-23 15:44:05
2 2021-02-23 15:44:15
3 2021-02-23 15:44:25
4 2021-02-23 15:44:35
5 2021-02-23 15:44:45
6 2021-02-23 15:44:55
7 2021-02-23 15:45:05
8 2021-02-23 15:45:15
9 2021-02-23 15:45:25
10 2021-02-23 15:45:35
Otorgar privilegios
Para permitir que un usuario cree, modifique o elimine eventos, debe proporcionar privilegios:
GRANT EVENT ON (schema) TO (user)
Por ejemplo, el siguiente comando otorga permiso para el esquema myschema a un usuario llamado lin@tolvar .
GRANT EVENT ON myuschema TO lin@tolvar
Si usa un asterisco (*), otorga permisos para todos los esquemas.