Diferencia entre revisiones de «Mysql Eventos»
Ir a la navegación
Ir a la búsqueda
Línea 25: | Línea 25: | ||
=Creación de eventos= | =Creación de eventos= | ||
+ | * La orden SQL para crear eventos es [https://dev.mysql.com/doc/refman/5.7/en/create-event.html CREATE EVENTE]. | ||
+ | * Se necesita el [https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_event privilegio EVENT] sobre la base de datos. | ||
+ | |||
+ | |||
+ | * Entre las diferentes opciones tenemos: | ||
+ | :* ON SCHEDULE: Indicamos el momento en que se va a ejecutar el evento y su frecuencia (una vez, una vez cada cierto tiempo, entre dos intervalos de tiempo,....) | ||
+ | :* DEFINER: Al igual que en el caso de las vistas y procedimientos, indicamos el usuario con el que se va a ejecutar el evento y por lo tanto se ejecutará con los permisos que tenga asociados dicho usuario. | ||
+ | :* event_body: Es el contenido del evento. | ||
+ | :* ON COMPLETION PRESERVE indica que el evento, cuando se termina de ejecutar (y si ya no va a ejecutarse posteriormente) no se elimine (que es el comportamiento por defecto y se indica con la opción ON COMPLETION NOT PRESERVE). | ||
+ | :* DISABLE indica que el evento está creado pero no se va a ejecutar. Para activarlo (normalmente con la orden SQL ALTER EVENT) pondremos ENABLE. La opción DISABLE ON SLAVE se utiliza en entornos de replicación con Mysql instalado en varios equipos. Lo que indicaría esta opción es que el evento sólo debe ejecutarse en el MASTER y no debe replicarse a los SLAVES. | ||
+ | |||
+ | |||
+ | * Veamos un ejemplo: | ||
+ | ::<syntaxhighlight lang="java" line enclose="div" highlight="" > | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | <br /> | ||
+ | =Modificación de eventos= | ||
+ | |||
+ | * La orden SQL que modifica un evento es [https://dev.mysql.com/doc/refman/5.7/en/alter-event.html ALTER EVENT]. | ||
+ | * Se necesita el [https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_event privilegio EVENT] sobre la base de datos. | ||
+ | |||
+ | |||
+ | * Veamos un ejemplo: | ||
+ | ::<syntaxhighlight lang="java" line enclose="div" highlight="" > | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | <br /> | ||
+ | =Borrado de eventos= | ||
+ | |||
+ | * La orden SQL que modifica un evento es [https://dev.mysql.com/doc/refman/5.7/en/drop-event.html DROP EVENT]. | ||
+ | * Se necesita el [https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_event privilegio EVENT] sobre la base de datos. | ||
+ | |||
+ | |||
+ | * Si intentamos borrar un evento que no existe sin utilizar la opción DROP EVENT '''IF EXISTS''' el gestor Mysql lanzará una excepción con el mensaje: ERROR 1517 (HY000): Unknown event 'event_name' | ||
+ | |||
+ | * Veamos un ejemplo: | ||
+ | ::<syntaxhighlight lang="java" line enclose="div" highlight="" > | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | <br /> | ||
+ | =Consulta de eventos= | ||
+ | |||
+ | * La orden SQL que permite obtener información de un evento es [https://dev.mysql.com/doc/refman/5.7/en/show-events.html SHOW EVENTS]. | ||
+ | * Se necesita el [https://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html#priv_event privilegio EVENT] sobre la base de datos. | ||
+ | |||
+ | : Dicha orden muestra información sobre quien creó el evento, cuando comienza a ejecutarse y su intervalo de ejecución, cuando finaliza, si está habilitado y sobre qué base de datos actúa. | ||
+ | |||
+ | * Si queremos obtener el código del evento, debemos de ejecutar la orden SQL [https://dev.mysql.com/doc/refman/5.7/en/show-create-event.html SHOW CREATE EVENT]. | ||
+ | : También podemos consultar directamente el diccionario de datos, concretamente la [https://dev.mysql.com/doc/refman/5.7/en/events-table.html tabla EVENTS] de la base de datos INFORMATION_SCHEMA. | ||
+ | |||
+ | |||
+ | |||
+ | * Veamos un ejemplo: | ||
+ | ::<syntaxhighlight lang="java" line enclose="div" highlight="" > | ||
+ | |||
+ | </syntaxhighlight> | ||
+ | |||
+ | |||
+ | |||
+ | <br /> | ||
+ | =Ejercicios propuestos= | ||
Revisión del 09:49 12 abr 2018
Sumario
Introducción
- Los eventos son tareas que se ejecutan en base a un horario definido previamente.
- Antes de la versión 5.7, los eventos eran 'simulados' haciendo uso de la función cron del sistema operativo LINUX o con el programador de tareas de Windows.
- Un evento se identifica por su nombre. Cada evento está asociado a un esquema (base de datos) y se ejecuta en un intervalo de tiempo determinado.
- Un evento ejecuta un conjunto de instrucciones SQL formando un bloque dentro de un BEGIN - END.
- Los eventos se pueden programar para que se ejecuten una única vez o periódicamente.
- Para poder crear eventos programados y que estos se ejecuten es necesario hacer uso de la variable global event_scheduler.
- Si vale OFF: El thread que se encarga de ejecutar los eventos está desactivado y por lo tanto no se ejecutará ningún evento. La tarea 'event_sheduler' no se muestra con la orden SHOW PROCESSLIST. Es el valor por defecto. En este estado, para activar el planificador de eventos debemos darle el valor ON a esta variable.
- Si vale ON: El 'Event Scheduler' (planificador de eventos) es iniciado. En este caso aparecerá como un proceso más al ejecutar la orden SQL: SHOW PROCESSLIST. Para desactivarlo tendremos que cambiar su valor a OFF.
- Si vale DISABLED: En este caso el planificador de eventos no podría ser activado dinámicamente cambiando el valor de la variable global a ON.
- Nota: Recordar que ya vimos en esta wiki como cambiar el valor de una variable global.
Creación de eventos
- La orden SQL para crear eventos es CREATE EVENTE.
- Se necesita el privilegio EVENT sobre la base de datos.
- Entre las diferentes opciones tenemos:
- ON SCHEDULE: Indicamos el momento en que se va a ejecutar el evento y su frecuencia (una vez, una vez cada cierto tiempo, entre dos intervalos de tiempo,....)
- DEFINER: Al igual que en el caso de las vistas y procedimientos, indicamos el usuario con el que se va a ejecutar el evento y por lo tanto se ejecutará con los permisos que tenga asociados dicho usuario.
- event_body: Es el contenido del evento.
- ON COMPLETION PRESERVE indica que el evento, cuando se termina de ejecutar (y si ya no va a ejecutarse posteriormente) no se elimine (que es el comportamiento por defecto y se indica con la opción ON COMPLETION NOT PRESERVE).
- DISABLE indica que el evento está creado pero no se va a ejecutar. Para activarlo (normalmente con la orden SQL ALTER EVENT) pondremos ENABLE. La opción DISABLE ON SLAVE se utiliza en entornos de replicación con Mysql instalado en varios equipos. Lo que indicaría esta opción es que el evento sólo debe ejecutarse en el MASTER y no debe replicarse a los SLAVES.
- Veamos un ejemplo:
Modificación de eventos
- La orden SQL que modifica un evento es ALTER EVENT.
- Se necesita el privilegio EVENT sobre la base de datos.
- Veamos un ejemplo:
Borrado de eventos
- La orden SQL que modifica un evento es DROP EVENT.
- Se necesita el privilegio EVENT sobre la base de datos.
- Si intentamos borrar un evento que no existe sin utilizar la opción DROP EVENT IF EXISTS el gestor Mysql lanzará una excepción con el mensaje: ERROR 1517 (HY000): Unknown event 'event_name'
- Veamos un ejemplo:
Consulta de eventos
- La orden SQL que permite obtener información de un evento es SHOW EVENTS.
- Se necesita el privilegio EVENT sobre la base de datos.
- Dicha orden muestra información sobre quien creó el evento, cuando comienza a ejecutarse y su intervalo de ejecución, cuando finaliza, si está habilitado y sobre qué base de datos actúa.
- Si queremos obtener el código del evento, debemos de ejecutar la orden SQL SHOW CREATE EVENT.
- También podemos consultar directamente el diccionario de datos, concretamente la tabla EVENTS de la base de datos INFORMATION_SCHEMA.
- Veamos un ejemplo:
Ejercicios propuestos
-- Ángel D. Fernández González -- (2017).