Logo de Código Facilito
  • Inicio
  • Replays
  • Iniciar sesión
  • Crear cuenta
  • Explorar cursos
  • Bootcamps
  • Precios
  • Blog

¡Califica el Curso Profesional de Base de Datos!

Selecciona la calificación de 1 a 5 estrellas

Reporta un error

Curso Curso Profesional de Base de Datos

Video Eventos MySQL

Tipo de error

Algo salió mal al cargar el vídeo

El vídeo no pudo cargarse, hemos enviado un reporte al equipo de desarrollo, para poder solucionarlo a la brevedad.

Mientras solucionamos el problema, intenta lo siguiente para solucionar el error:

  • Recarga la página
  • Intenta reiniciar tu navegador y luego vuelve a reproducir el vídeo
  • Vacía el caché de tu navegador
  • Intenta reproducir con las extensiones del navegador deshabilitadas
  • Intenta con un navegador distinto
  • Si el problema persiste contáctanos en Discord
home Ir al inicio report_problem Reportar falla star Valorar curso

A partir de la versión 5.1, MySQL añade el concepto de eventos. Un evento no es más que una tarea la cual se ejecuta de forma automática en un momento previamente programado. Si eres un usuarios Linux puedes ver a los eventos cómo los cron jobs .

Los eventos nos permitirán a nosotros cómo administradores de base de datos programar ciertas tareas las cuales queremos que se ejecuten de forma periódica o en un momento en concreto, de tal manera que podamos automatizar ciertos procesos.

Ejemplos

Para este tutorial me apoyaré de mi tabla test.

CREATE TABLE test(
 evento VARCHAR(50),
 fecha DATETIME 
); 

Lo primero que debemos de hacer es habilitar nuestro servidor para que pueda ejecutar eventos.

SET GLOBAL event_scheduler = ON;

Posteriormente creamos nuestro evento; En mi caso, tendrá el nombre de insertion event. Este evento se ejecutará dentro de 1 min, y lo que hará, será insertar un registro en mi tabla.

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

El nombre del evento no debe de poseer más de 64 caracteres.

Si queremos que el evento se ejecute en una fecha en concreto, únicamente debemos de especificarlo en ON SCHEDULE AT. Recuerda, el formato es año-mes-día hora:minuto:segundo.

ON SCHEDULE AT '2018-12-31 12:00:00'

Si nuestro evento ejecutará más de una sentencia SQL debemos de apoyarnos de BEGIN y END.

DELIMITER //

CREATE EVENT insertion_event
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
DO
BEGIN
 INSERT INTO test VALUES ('Evento 1', NOW());
 INSERT INTO test VALUES ('Evento 2', NOW());
 INSERT INTO test VALUES ('Evento 3', NOW());
END //

DELIMITER ;

Una vez el evento se haya creado, nosotros podemos listarlo.

SHOW events\G;

Si queremos eliminar un evento haremos uso de DROP.

DROP EVENT nombre_evento;

Es importante mencionar que una vez el evento haya expirado, este, será eliminado de forma automática. Si nosotros no queremos que esto ocurra debemos de apoyarnos de ON COMPLETION

ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
ON COMPLETION PRESERVE
...

Algo común con los eventos es trabajar con store procedures.

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

Eventos periódicos.

Los eventos los podemos programar para que se ejecuten de 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());

En esta ocasión, el evento se ejecuta cada minuto después de las 6:30 PM. Podemos programar la ejecución para cada segundo, minuto, hora, semana, mes o año.

Si nosotros queremos que el evento se ejecute entre un rango de fechas debemos de apoyarnos de ENDS.

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

Ahora, el evento se ejecuta durante un periodo de 30 minutos (De 6:30 PM a 7:00 PM).

Editar eventos

Si por alguna razón necesitamos detener un evento, lo que debemos de hacer es deshabilitarlo.

ALTER EVENT nombre_evento
DISABLE;

Para habilitar nuevamente un evento colocamos ENABLE.

ALTER EVENT nombre_evento
ENABLE;

Detener eventos

Para detener completamente todos los eventos, debemos de ejecutar la siguiente sentencia.

SET GLOBAL event_scheduler = OFF;

Estructura de un evento

Los eventos en MySQL pueden ser tan complejos como nosotros los deseemos.

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}
  • check_circle_outline
    Módulo 1 | 8 clases

    Introdución

    expand_more
  • check_circle_outline
    Módulo 2 | 3 clases

    Servidor de base de datos

    expand_more
  • check_circle_outline
    Módulo 3 | 10 clases

    Base de datos y tablas

    expand_more
  • check_circle_outline
    Módulo 4 | 8 clases

    Restricciones

    expand_more
  • check_circle_outline
    Módulo 5 | 2 clases

    Modificar tablas

    expand_more
  • check_circle_outline
    Módulo 6 | 12 clases

    Sentencias basicas

    expand_more
  • check_circle_outline
    Módulo 7 | 8 clases

    Funciones

    expand_more
  • check_circle_outline
    Módulo 8 | 12 clases

    Sentencias avanzadas

    expand_more
  • check_circle_outline
    Módulo 9 | 7 clases

    Joins

    expand_more
  • check_circle_outline
    Módulo 10 | 4 clases

    Vistas

    expand_more
  • check_circle_outline
    Módulo 11 | 7 clases

    Procedimientos

    expand_more
  • check_circle_outline
    Módulo 12 | 4 clases

    Transacciones

    expand_more
  • check_circle_outline
    Módulo 13 | 5 clases

    Extras

    expand_more
    • done_all

      Clase 1

      Motores de almacenamiento en MySQL

    • done_all

      Clase 2

      Eventos MySQL

    • done_all

      Clase 3

      Cursores MySQL

    • done_all

      Clase 4

      Respaldo de información

    • done_all

      Clase 5

      Asignar permisos a usuarios MySQL

  • check_circle_outline
    Módulo 14 | 5 clases

    Triggers

    expand_more
  • check_circle_outline
    Módulo 15.-

    Examen del curso

    expand_more
    • done_all

      Examen

      Examen final del curso

Eventos MySQL

arrow_back Siguiente arrow_forward
Curso Profesional de Base de Datos