Professional Documents
Culture Documents
MORA PATRICIO
CONCEPTO
CREACIN
Para crear un disparador utilizaremos la siguiente instruccin:
CREATE {OR REPLACE} TRIGGER nombre_disp
[BEFORE|AFTER]
ON tabla
[DECLARE]
BEGIN
-- Instrucciones de ejecucin
[EXCEPTION]
-- Instrucciones de excepcin
END;
TIPOS DE TRIGGERS
Se ejecuta si existe, el disparador de tipo AFTER (disparador posterior) con nivel de fila.
LA CLUSULA WHEN
La clusula WHEN slo es vlida para disparadores con nivel de fila. Si est presente, el cuerpo del
disparador slo se ejecutar para las filas que cumplan la condicin especificada en la clusula.
CREATE TRIGGER tr1
BEGIN
END;
Esto ltimo es equivalente a:
CREATE TRIGGER tr1
BEGIN
END;
Para hacer que un trigger ejecute un ROLLBACK de la transaccin que tiene activa y
teniendo en cuenta que en las sentencias que componen el cuerpo de un trigger no
puede haber este tipo de sentencias (rollback, commit,) hay que ejecutarerror /
excepcionmediante la sentencia raise_application_error cuya sintaxis es:
RAISE_APPLICATION_ERROR(num_error,mensaje);
TABLA MUTANDO
Cuando se realiza un trigger sobre una tabla, dicha tabla se dice que est
enproceso de mutacin, es decir, que se estn realizando cambios sobre ella
y que por tantodentro del trigger no se debe hacer ningn tipo de acceso a
dicha tabla con operaciones DML (SELECT, INSERT, DELETE o UPDATE).
Si queremos conocer los valores del registro de la tabla sobre la que se ha
disparado el trigger, este ltimo debe estar declarado de forma FOR EACH ROW y
acceder a sus valores mediante las pseudocolumnas :NEW y :OLD.