ESPECIALIZACIN EN BASE DE DATOS
RISARALDA
CENTRO DE DISEO EN INNOVACIN TECNOLGICA INDUSTRIAL
DOSQUEBRADAS
Diego Fernando Salcedo Toro
INGENIERO DE SISTEMAS
INSTRUCTOR SENA CDITI TELEINFORMATICA
[email protected][email protected]TU CELULAR EN MODO
SILENCIO O VIBRACIN
PORFAVOR NO CONSUMIR
ALIMENTOS EN EL SALON DE
CLASE
MYSQL 5.7
Mysql : Triggers
Objetivos:
Describir los triggers
Identificar cuando utilizar triggers
Crear un nuevo trigger
Eliminar un triggers
Describir eventos programados
MYSQL 5.7
Mysql : Triggers
Que son los disparadores?
Triggers :
Objetos que contienen cdigo, similar a procedimientos
almacenados
Creados dentro de una base de datos
Asociado a una tabla especifica
Activados automticamente para cada fila cuando una
tabla es modificada
Triggers nos permiten:
Responder a eventos en nuestra base de datos
Invocar operaciones automticamente cuando los
datos de la base de datos cambian
MYSQL 5.7
Mysql : Triggers
Casos en los cuales utilizar
Trigger
Utilice triggers para:
Examinar los datos antes de ser insertados o
actualizados
Verificar eliminaciones o actualizaciones
Modificar los datos si estn fuera de rango, antes de
un insert o update
Modificar como se comportan los INSERT, UPDATE y
DELETE para una tabla
Simular el comportamiento de las claves forneas
Hacer Logging de modificaciones de los datos
Crear resmenes de los datos modificados
MYSQL 5.7
Mysql : Triggers
Crear Triggers
Utilice el CREATE TRIGGER.
CREATE TRIGGER Tiene la sintaxis:
Ejemplo:
MYSQL 5.7
Mysql : Triggers
Eventos del Trigger
Triggers se definen para una tabla especifica.
Responden a eventos especficos y lo hacen antes o
despus de dichos eventos:
ANTES: El cdigo del trigger se ejecuta una vez por cada
fila afectada antes de que el evento cambie los datos de
la tabla.
DESPUES: El cdigo del trigger se ejecuta una vez por
cada fila despus de ser disparado el evento de cambio de
datos.
MYSQL 5.7
Mysql : Triggers
Usar ANTES los Triggers
ANTES El trigger se dispara antes de modificar los datos de la
tabla. Por ejemplo, podemos utilizarlos para validar la entrada
de datos y corregir o evitar entradas incorrectas antes de
almacenarlos.
Hay tres eventos asociados con el trigger BEFORE:
ANTES DE INSERT: Este evento se dispara antes de
adicionar nuevos datos a cada fila en la tabla
ANTES DE UPDATE: Este evento se dispara antes de
un update o antes de sobreescribir cualquier dato en
una tabla.
ANTES DE DELETE Tse dispara antes de eliminar datos
de una tabla.
MYSQL 5.7
Mysql : Triggers
Utilizar los Triggers DESPUES
DESPUES Se disparan despus de modificar los datos. Por
example, los podemos utilizar para logging o auditar datos.
Existen tres eventos asociados con el AFTER:
AFTER INSERT: Se dispara aantes de adicionar nuevos
datos a la tabla.
AFTER UPDATE: Este evento se dispara despus de
actualizar o sobreescribir datos existentes en la tabla
con los nuevos datos.
AFTER DELETE: Este evento se dispara despus de
eliminar los datos de la tabla.
MYSQL 5.7
Mysql : Triggers
Trigger Metadata
Utilice SHOW TRIGGERS tpara ver informacin sobre ellos.
MYSQL 5.7
Mysql : Triggers
Manejo de Errores en los Triggers
MySQL maneja los errores durante la ejecucin del trigger de
esta manera:
Si un trigger BEFORE falla, el servidor no realiza la
operacin en la fila correspondiente.
El servidor ejecuta un trigger AFTER solo si el trigger
BEFORE tse ejecuto en la fila satisfactoriamente.
El servidor realiza un rolls back de la transaccin si el
trigger falla.
MYSQL 5.7
Mysql : Triggers
Eliminando Triggers
Utilizar DROP TRIGGER La sistaxis es:
DROP TRIGGER <trigger_name>;
Cuando utilizamos DROP TRIGGER, el servidor busca por el
trigger en el schema actual. Si el trigger que estamos
eliminando se encuentra en otro schema, simplemente incluir
el nombre del schema:
DROP TRIGGER <schema_name>.<trigger_name>;
MYSQL 5.7
Mysql : Triggers
Restricciones de los Triggers
No podemos crear triggers que incluyan las siguientes
sentencias:
Sentencias que funcionan en sentencias preparadas
como
PREPARE, EXECUTE, DEALLOCATE PREPARE
Sentencias que implcitamente o explcitamente realicen
una transaccin con commit o roll back
Sentencias que retornan valores utilizando set"
Sentencias que utilizan FLUSH
Sentencias recursivas. Los triggers no pueden incluir
sentencias que causen que el mismo trigger se ejecute, o
que modifique filas en la misma tabla activa.
MYSQL 5.7
Mysql : Triggers
El scheduler de MySQL
Los eventos de MySQL son tareas de la base de datos
las cuales se ejecutan de acuerdo a una programacin.
La diferencia con respecto a un trigger el cual se
invoca con cambios en la base de datos, es que el
Schedule se invoca en una fecha y hora especifica.
Similar a programar tareas con cron
til para tareas de mantenimiento como el
almacenamiento de datos o un generador de reportes
Uso:
Encienda la variable global del programador con
event_scheduler.
Crea el evento: CREATE EVENT...ON SCHEDULE AT
Observa el evento con SHOW PROCESSLIST.
MYSQL 5.7
Mysql : Triggers
El scheduler de MySQL
1.- Se crea el evento myevent
2.- Se configura para
ejecutarse cada minuto
3.- Por defecto el evento es
eliminado despus de expirar,
con ON COMPLETION
PRESERVE cambia este
comportamiento
4.- Ejecuta la sentencia SQL.
5.- Muestra el evento a ser
activado, si este no se puede
observar, revise la variable
global:
mysql> SELECT @@event_scheduler;
+-------------------+
| @@event_scheduler |
+-------------------+
| OFF
|
+-------------------+
1 row in set (0.00 sec)
mysql> SET GLOBAL event_scheduler =
ON;