Está en la página 1de 3

EVENTOS

Un Evento es una tarea cuya ejecución es programada previamente según una fecha y hora
especifica. Llegado el momento se ejecutara automáticamente la tarea.

Para usar eventos, primero debemos habilitar en el servidor la siguiente opción:

SET GLOBAL event_scheduler = ON;

Ejm. Crear un evento que se ejecute dentro de 1 minuto

CREATE EVENT insertion_event


ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO INSERT INTO test VALUES ('Evento 1', NOW());

Crear un evento que se ejecute en una fecha y hora especifica:


CREATE EVENT backup_final
ON SCHEDULE AT '2019-12-31 12:00:00'
DO …

Tambien podemos ejecutar un bloque de sentencias encerrandolos entre BEGIN .. END

Para mostrar los eventos programados se hace:


SHOW events\G;

Para borrar un evento


DROP nombre_evento

Una vez que el evento se haya realizado entonces se destruirá dicho evento, si desea conservarlo
entonces debemos usar la opción ON COMPLETION PRESERVE

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE


ON COMPLETION PRESERVE
...
Se puede usar eventos para ejectuar procedimientos almacenados:

CREATE EVENT nombre_evento


ON SCHEDULE AT 'fecha de ejeución'
DO
CALL store_procedure();

Tambien se pueden programar eventos para que se ejecuten en forma periódica:


CREATE EVENT insertion_event
ON SCHEDULE EVERY 1 MINUTE STARTS '2018-07-07 18:30:00'
DO INSERT INTO test VALUES ('Evento 1', NOW());
Y con la opcion ENDS establecemos un rango de fechas:

CREATE EVENT insertion_event


ON SCHEDULE EVERY 1 MINUTE STARTS '2019-11-07 18:30:00'
ENDS '2019-11-07 19:00:00'
DO INSERT INTO test VALUES ('Evento 1', NOW());

Para detener o bloquear un Evento:

ALTER EVENT nombre_evento


DISABLE;

Para volverlo a habilitar:

ALTER EVENT nombre_evento


ENABLE;

Para detener todos los eventos:

SET GLOBAL event_scheduler = OFF;

El formato general para los eventos es:

CREATE
[DEFINER = { user | CURRENT_USER }]
EVENT
[IF NOT EXISTS]
event_name
ON SCHEDULE schedule
[ON COMPLETION [NOT] PRESERVE]
[ENABLE | DISABLE | DISABLE ON SLAVE]
[COMMENT 'string']
DO event_body;

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}
LABORATORIO - 14 NOV 19

1. Crear un evento que a las 11:30 inserte un registro a la table ALUMNO


Mysql> create event … do insert into alumno(‘1001’,’juan’, ..)
Mysql> show events\G
Mysql> select * from ALUMNO
Pasado el instante del evento
Mysql> select * from ALUMNO
Mysql>show events\G

2. Crear un procedimiento almacenado que añada 1 año a la edad de todos los alumnos.
Luego crear un evento que 2 minutos despues del momento de creado el evento llame a
dicho procedimiento almacenado.

También podría gustarte