Crear y ejecutar un disparadores (Triggers) en PL/SQL Oracle



En una tabla se pueden realizar operación insert, update y delete que son procesos de modificación de datos, las tablas pueden realizar validaciones de esos datos que se están agregando, quitando o modificando, asegurando con esto la integridad de la base de datos es decir protegiendo la regla de negocio.

Para realizar esta validación se utiliza un objeto de base de datos llamado trigger el cual será invocado al momento de ejecutar una operación insert, update o delete, los disparadores no son ejecutados por el usuario, estos son automáticamente llamados al intentar ejecutar un proceso DML (Insert, Update, Delete) sobre una tabla que tenga asociado un trigger.

Create or replace trigger nombre_disparador
{before, after}
{insert , update , delete[of campos]}
      On nombre_table
for each row 
When  condición
Begin
       Proceso a ejecutar
End nombre_disparador;

Descripción:
1-      (Before, after): Indica el momento en que se realiza la validación, es decir antes, después o en el instante que se ejecuta el insert, update o delete.

2-      (Insert, update,delete): Indica la operación que activara el disparador, es decir el disparador reaccionara cuando se aplique una inserción, actualización o eliminación de datos, En la instrucción update( of campos), se le deben indicar los campos que activaran el disparador.

3-       for each row: Indica que la validación la realizada por cada fila afectada.

Ejemplo:
CREATE TABLE amigos(
                Nombre VARCHAR2(200)
);

CREATE OR REPLACE TRIGGER  disp_amigos
AFTER INSERT  ON amigos
FOR EACH ROW
BEGIN
   IF :NEW.nombre = 'MONICA' THEN
                RAISE_APPLICATION_ERROR(-20010, 'Este nombre no está permitido en la base de datos');
   END IF;
END disp_amigos;
 
INSERT INTO amigos (NOMBRE) VALUES ('MONICA');

Esta inserción provocaria un error.

1 comentario: