Oracle utilizando los activadores AFTER INSERT y AFTER UPDATE

Un disparador de base de datos es un procedimiento almacenado que se ejecuta automáticamente cada vez que ocurre un evento. El evento puede ser insertar-eliminar-actualizar operaciones.

Oracle inicia un desencadenante "DESPUÉS DE INSERTAR" después de que se haya producido un evento de inserción y un desencadenante de "DESPUÉS DE ACTUALIZAR" después de que se haya producido un evento de actualización.

Veamos un ejemplo para el disparador 'AFTER INSERT'.

Sintaxis:

CREAR o REEMPLAZAR el gatillo
Después de insertar en table_name
POR CADA FILA
DECLARAR
declaraciones variables
EMPEZAR
declaración de activación
FIN;

Primer problema: queremos insertar un registro en la tabla 'emp_backup', si un registro se inserta en la tabla 'emp'.

Solución - Un gatillo de AFTER INSERT

Vamos a crear una tabla 'emp'.

SQL> crear tabla emp (
número empid (10),
fchar varchar (25),
lname varchar (25)
);

Ahora crear un 'emp_backup' Mesa con la misma estructura que la tabla 'emp'.

SQL> crear tabla emp_backup (
número empid (10),
fchar varchar (25),
lname varchar (25)
);

Ahora, para insertar un registro en la tabla 'emp_backup' si un registro se inserta en la tabla 'emp', escribiremos un 'DESPUÉS DE INSERTAR' Desencadenar.

SQL> CREATE o REPLACE TRIGGER emp_after_insert
Después de insertar en emp
POR CADA FILA
DECLARAR
EMPEZAR
insertar en los valores de emp_backup (: new.empid,: new.fname,: new.lname);
DBMS_OUTPUT.PUT_LINE ('Registro insertado exitosamente en la tabla emp_backup');
FIN;

El disparador anterior llamado 'emp_after_insert' es iniciado para cada fila insertada en la tabla emp Ahora, si insertamos una fila en la tabla 'emp', se insertará automáticamente en la tabla 'emp_backup'.

SQL> insertar en los valores emp (1, 'jon', 'gibson');
Registro insertado exitosamente en la tabla emp_backup
1 fila creada.

Ahora consulta la tabla 'emp'.

SQL> select * from emp; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 1 jon gibson

Consulta la tabla 'emp_backup'.

SQL> select * from emp_backup; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 1 jon gibson


Nota: Si no está recibiendo el mensaje 'Registro insertado exitosamente en la tabla emp_backup'Haz el siguiente comando antes de crear el disparador.

SQL> establecer serveroutput on;

Veamos un ejemplo para el disparador 'DESPUÉS DE ACTUALIZACIÓN'.

Sintaxis:

CREAR o REEMPLAZAR el gatillo
DESPUÉS DE ACTUALIZACIÓN en table_name
POR CADA FILA
DECLARAR
declaraciones variables
EMPEZAR
declaración de activación
FIN;

Segundo problema: queremos actualizar un registro en la tabla 'emp_backup' si el registro correspondiente se actualiza en la tabla 'emp'.

Como ya hemos creado las dos tablas en el ejemplo anterior, escribiremos directamente un disparador para 'DESPUÉS DE LA ACTUALIZACIÓN'.

SQL> CREATE o REPLACE TRIGGER emp_after_update DESPUÉS DE LA ACTUALIZACIÓN DE empid EN emp PARA CADA FILA DECLARAR COMENZAR actualización emp_backup set empid =: new.empid where empid =: old.empid; DBMS_OUTPUT.PUT_LINE ('empid actualizado con éxito en la tabla emp_backup'); FIN;

El desencadenante anterior denominado 'emp_after_update' se iniciará cada vez que se actualice la columna 'empid' en la tabla 'emp'.

Ahora, antes de actualizar la columna 'empid' en la tabla 'emp', vea los registros de las tablas 'emp' y 'emp_backup'.

SQL> select * from emp; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 1 jon gibson
SQL> select * from emp_backup; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 1 jon gibson

Ahora actualice la columna 'empid' en la tabla 'emp'.

SQL> update emp
establecer empid = 5
donde empid = 1;
empid actualizado con éxito en la tabla emp_backup
1 fila actualizada.

Después de la actualización de 'empid' en la tabla 'emp', veamos la tabla 'emp_backup'.

SQL> select * from emp_backup; EMPID FNAME LNAME ---------- ------------------------- ------------ ------------- 5 jon gibson

Nota: Si no está recibiendo el mensaje 'empid actualizado con éxito en la tabla emp_backup'ejecuta el siguiente comando antes de crear el disparador.

SQL> establecer serveroutput on;