Está en la página 1de 19

DISPARADORES

(TRIGGERS)
DISPARADORES
(TRIGGERS)
• Un trigger o disparador en una Base de datos, es un procedimiento o
rutina automática que se ejecuta cuando se cumple una condición
establecida al realizar una operación sobre las tablas a las que se
encuentra asociado. Dependiendo de la base de datos, los trigger
pueden ser de inserción (INSERT), actualización (UPDATE) o borrado
(DELETE). Algunas bases de datos pueden ejecutar trigger al crear,
borrar o editar usuarios, tablas, bases de datos u otros objetos.
VENTAJAS
• La entrada en vigor automática de restricciones de los datos, hace que los
usuarios entren sólo valores válidos.

• El mantenimiento de la aplicación se reduce, los cambios a un disparador se


refleja automáticamente en todas las aplicaciones que tienen que ver con la
Tabla.

•La notificación automática de cambios a la Base de Datos con alertas de evento


en los disparadores.

DESVENTAJAS
• Se tiene que programar anticipadamente lo que tiene que realizar un trigger.

• Siendo un procedimiento, no puede invocarse directamente

• Los trigger siempre serán creados para un conjunto de registros y no para uno
solo ya que se dispara por operación DML
ESTRUCTURA BASICA DE UN
TRIGGER

• Llamada de activación: es la sentencia que permite la ejecución del


código.

• Restricción: es la condición necesaria para realizar el código. Esta


restricción puede ser de tipo condicional o de tipo nulidad.

• Acción a ejecutar: es la secuencia de instrucciones a ejecutar una vez


que se han cumplido las condiciones iniciales.

NOTA: Un trigger se puede ejecutar antes (BEFORE) o después (AFTER) de


que sean modificados los datos. Además manejan dos palabras clave, OLD y
NEW. Estas palabras se refieren a los valores que tienen las columnas antes
SINTAXIS
ELEMENTOS DE UN TRIGGER
• BEFORE / AFTER: elemento que dispara el trigger

• INSERT, DELETE, UPDATE: Define qué tipo de orden DML provoca la


activación del disparador.

• FOR EACH: Determina si el trigger se ejecutará para cada fila afectada o


bien antes (o después) de que la secuencia se haya completado.

• FOR EACH ROW: salto por cada fila afectada.

VARIABLES POSIBLES PARA UPDATE: La primera


es old que hace referencia a los valores anteriores y new que hace
referencia a los nuevos valores de actualización de la fila.
ASPECTOS A TENER EN CUENTA
• Cuando el evento que dispara el trigger es un DELETE haremos
referencia al valor old porque el valor new es nulo.

• Cuando el evento que dispara el trigger es un INSERT haremos


referencia al valor new porque el old es nulo.

• Cuando el evento es un UPDATE tiene sentido hacer referencia a los dos


valores.

• Solo se puede utilizar cuando el trigger es a nivel de fila (FOR EACH


ROW)
EJEMPLO
Se registrarán dos tablas. Una tabla curso que maneja estudiantes y otra tabla
que maneje la auditoría

CURSOS
AUDITORIA_CURSOS
Insertamos datos: insert into cursos values('Pedro',25, 'M', 'Cálculo');

Modificamos datos: update cursos set curso = 'Base de Datos' where estudiante =
'Pedro';
Eliminamos dato: delete from cursos where estudiante = 'Pedro';

La tabla Auditoría quedaría de la siguiente manera:


SEGUNDO EJEMPLO
Realice un TRIGGER que NO permita que el precio y el stack de un producto sea
una cifra negativa. Si la cifra ingresada es negativa, automáticamente debe
llenarse el campo con “0”

Crear una tabla llamada producto con los atributos: codigo, nombre, precio y
stack
Insertamos datos: insert into producto values(1, 'Culantron', 2300, 4);

Ahora Insertamos valores negativos: insert into producto values(2, 'Papaya', -2300, 4);
Ambos negativos: insert into producto values(3, ‘Hojita', -5000, -4);
ORDEN DE EJECUCION DE LOS
TRIGGERS
Una misma tabla puede tener varios triggers y el orden de disparo sería
el siguiente:

1. Antes de comenzar a ejecutar la orden que provoca el disparo se


ejecutarán los triggers del tipo BEFORE… FOR EACH STATEMENT

2. Para cada fila afectada por la orden:

a. Se ejecutan los triggers del tipo BEFORE FOR EACH ROW


b. Se ejecuta la actualización de la fila
c. Se ejecutan los triggers AFTER… FOR EACH ROW
3. Una vez realizada la operación se ejecuta el after for each Statement
Existen dos tipos de disparadores que se clasifican según la cantidad de
ejecuciones a realizar:

• TRIGGER DML
• TRIGGER DDL

TRIGGER DML
Son procedimientos almacenados que se ejecutan automáticamente ante un
evento DML (update- Delete - Insert) que afecta una tabla o vista.

Se utilizan para:
• Forzar reglas de negocios
• Mantener la integridad de datos
• Ejecutar complejas instrucciones SQL
CONSIDERACIONES Y
BENEFICIOS
• No se pueden invocar por sí mismos, se disparan automáticamente.

• No reciben ni retornan parámetros.

• Se puede crear más de un trigger para un mismo evento en una


tabla.
SINTAXIS

TRIGGER DDL
Son triggers especiales que se crean
a nivel de base de datos y que
disparan en respuesta a eventos
DML (update – Delete - insert).

Se utilizan para:
ejecutar tareas administrativas en
una base de datos auditando y
regulando cierta clase de eventos.
¡GRACIAS
!

También podría gustarte