Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PL SQL T
PL SQL T
Trigger
INTRODUCCIÓN
Un TRIGGER:
◼ Es un bloque PL/SQL o procedimiento PL/SQL
asociado con una tabla, vista, esquema o la base
de datos.
◼ Se ejecuta de manera automática cuando se
produce un evento.
INTRODUCCIÓN
Tipos de TRIGGER:
◼ TRIGGER de Aplicación: Se lanza cuando ocurre
un evento en una aplicación específica.
◼ TRIGGER de Base de Datos: Se lanza cuando
ocurre un evento de datos (como DML) o del
sistema (como el logon o shutdown).
EJEMPLO
Aplicación
INSERT INTO EMPLOYEES
...;
CHECK_SAL verifica los valores
de salario cuando cualquier
aplicación trata de insertar una
fila en la tabla EMPLOYEES
CHECK_SAL trigger
EMPLOYEES table
EMPLOYEE_ID LAST_NAME JOB_ID SALARY
100 King AD_PRES 24000
101 Kochhar AD_VP 17000
102 De Haan AD_VP 17000
103 Hunold IT_PROG 9000
SINTAXIS DE UN TRIGGER
CREATE OR REPLACE TRIGGER nombre
BEFORE|AFTER INSERT|UPDATE|DELETE OF [columna,.] ON tabla
FOR EACH ROW
WHEN condición
DECLARE
Variables, restricciones, cursores y excepciones definidas por el usuario
BEGIN
Bloque_pl/sql;
END;
VARIABLES
:new.columna
:old.columna
EXCEPCIONES
RAISE_APPLICACTION_ERROR()
CREAR UN TRIGGER DML
Una sentencia de TRIGGER contiene:
◼ Tiempo del TRIGGER (TRIGGER Timing)
◆Para tabla: BEFORE, AFTER
◼ Evento del TRIGGER (Triggering Event)
◆INSERT, UPDATE o DELETE.
◼ Nombre de Tabla: ON tabla.
◼ Tipo de TRIGGER: Fila o Sentencia
◼ Cláusula WHEN: Condición de restricción.
◼ Cuerpo del TRIGGER: Bloque PL/SQL.
COMPONENTES DE UN TRIGGER DML
Tiempo del TRIGGER: ¿Cuándo debería lanzarse el
TRIGGER?
◼ BEFORE: Ejecuta el TRIGGER sobre la tabla antes
del evento DML que lanza el TRIGGER.
◼ AFTER: Ejecuta el TRIGGER sobre la tabla
después del evento DML que lanza el TRIGGER.
COMPONENTES DE UN TRIGGER DML
El evento que lanza el TRIGGER puede ser:
◼ INSERT
◼ UPDATE
◼ DELETE
COMPONENTES DE UN TRIGGER DML
Tipo de TRIGGER: ¿Debería ejecutarse para cada fila
afectada por la sentencia DML o sólo una vez?
◼ Sentencia: El cuerpo del TRIGGER se ejecuta una
vez para el evento del TRIGGER. Esto es por
defecto.
◆Un TRIGGER de sentencia se ejecuta una vez,
incluso si no hay filas afectadas.
◼ Fila: El cuerpo del TRIGGER se ejecuta una vez
para cada fila afectada por el evento que lanza el
TRIGGER.
◆Un TRIGGER de fila no se ejecuta si no hay filas
afectadas por el evento.
EJEMPLO DE TRIGGER