Guía de Eventos MySQL

La creación de eventos MySQL han sido habilitados desde la versión 5.1.6 de MySQL, y ofrecen una alternativa a las tareas programadas y trabajos cron. Estos eventos pueden ser utilizados para crear copias de seguridad, eliminar registros, agregar datos en los informes, etc.

Un evento es un objeto que se desencadena por el paso del tiempo y se refiere a veces como un trigger temporal. Los eventos se pueden programar para que se ejecuten una vez o en un intervalo de tiempo cuando el servidor se encuentra con actividad baja.

En este artículo se va a explicar lo que necesitan saber para comenzar a utilizar eventos.

Activar planificador de eventos

El planificador de eventos MySQL es un proceso que se ejecuta en segundo plano y que busca constantemente eventos a ejecutar. Antes de crear o programar un evento es necesario activar primero el planificador, esta activación se realiza a través del siguiente comando:

mysql> SET GLOBAL event_scheduler = ON;

Del mismo modo para desactivarlo se tiene que usar el siguiente comando:

mysql> SET GLOBAL event_scheduler = OFF;

Una vez se encuentre activado puedes ver su estado a través del siguiente comando:

mysql> SHOW PROCESSLIST

Eventos MySQL

Trabajando con eventos

Es importante indicar que el evento únicamente puede realizar las acciones dentro de los permisos que tiene el usuario MySQL que lo creo. Otras restricciones a tener en cuenta son:

  • El nombre de los eventos MySQL no puede superar los 64 caracteres.
  • Cada nombre del evento debe de ser único.
  • A partir de la versión 5.1.8 de MySQL no se distinguen las mayúsculas y minúsculas en los nombres de los eventos.
  • Los eventos no se pueden crear, modificar o borrar a partir de otro evento.
  • No se puede hacer referencia a una función almacenada por el usuario desde un evento.

Creando eventos

En la siguiente imagen se ve un ejemplo de un evento creado:

Eventos MySQL

Este evento se ejecutará una vez, una hora después de que el evento haya sido creado. Entre los campos BEGIN y END se establecen las diferentes consultas que se ejecutarán, en este caso la actualización de un valor en una tabla en concreto. Como la sentencia UPDATE debe finalizar en punto y coma (;) habrá que cambiar los delimitadores (DELIMITER) antes del evento y posteriormente dejarlo como se encontraba.

Se puede ver todos los eventos creados a través del siguiente comando:

mysql> SHOW EVENTS

ver_evento

Una vez el evento se haya ejecutado se procederá a su eliminación automáticamente, excepto si se añade la condición ON COMPLETION que le permitirá guardar el evento para una posterior modificación o nuevo uso como se muestra en este ejemplo:

on_completion

Para eliminar permanentemente un evento se puede utilizar el comando DROP EVENT:

DROP EVENT nombreEvento;

Para que un evento se ejecute de forma recurrente se debe de utilizar la condición EVERY. Como se muestra en este ejemplo:

every_eventos

También se puede especificar la ejecución de un evento dentro de un período de tiempo con las clausulas START y END. Ejemplo:

evento_start_end

En este ejemplo el evento comenzaría ejecutándose al día siguiente y continuaría ejecutándose cada hora durante un año completo.

Los intervalos de tiempo que se pueden utilizar son los siguientes: YEAR (año), MONTH (mes), WEEK (semana), DAY (día), MINUTE (minuto) o SECOND (segundo).

Actualizando eventos

Si quisiéramos modificar un evento ya creado, en vez de borrarlo y crearlo de nuevo se podría utilizar la sentencia ALTER EVENT.  Siguiendo los ejemplos anteriores de eventos para modificar el intervalo de tiempo de su ejecución y que comenzará a ejecutarse en un día próximo a la 1 de la mañana  se haría del siguiente modo:

modificar_evento

Para modificar el nombre de un evento se podría utilizar la clausula RENAME como se ve en este ejemplo:

renombrar_evento

Puede descargarse MySQL desde su página oficial.

Esperamos que esta guía os haya servido de ayuda a la hora de conocer y utilizar los eventos MySQL. Si tienes tenéis cualquier pregunta no dudéis en comentarla.

Comparte este tutorial:

Comentarios (2)

Diego Melús

Diego Melús

Hola benito,

¿Podría aclararnos más en que situación se encuentra?

Muchas gracias por tu comentario.

benito camelo

benito camelo

no se si obtuve lo que queria, ¿Le puedo enviar parametros a mi evento?…

Envíanos tu comentario: