Vous êtes sur la page 1sur 2

El primer trigger con el nombre de trigBackUpTienda realiza el respaldo de la

tabla tienda en la tabla llamada tienda_copia


CREATE OR REPLACE TRIGGER trigBackUpTienda
BEFORE INSERT OR DELETE OR UPDATE ON tienda
REFERENCING OLD AS OLD NEW AS NEW
FOR EACH ROW
DECLARE
user_oc varchar (50);
action varchar (30);
BEGIN
SELECT sys_context('USERENV' , 'CURRENT_USER') INTO user_oc from dual;
IF INSERTING THEN
insert into tienda_copia values (:NEW.cod_tienda, :NEW.nom_tienda,
:NEW.tel_tienda);
action := 'INSERT';
ELSE IF UPDATING THEN
update tienda_copia SET cod_tienda = :NEW.cod_tienda,
nom_tienda = :NEW.nom_tienda,
tel_tienda = :NEW.tel_tienda
WHERE cod_tienda = :OLD.cod_tienda;
action := 'UPDATE';
ELSE
delete from tienda_copia where cod_tienda = :OLD.cod_tienda;
action := 'DELETE';
END IF;
insert into bitacora (id_evento, tabla, id_registro, tipo, hora,
usuario)
values (bit_increment.NEXTVAL, 'TIENDA' , :NEW.cod_tienda, action,
to_char(sysdate, 'HH:MI:SS AM'), user_oc);
END;

Cdigo del trigger (trigBackUpTienda)


El cdigo indica que en primer lugar se creara el trigger, en caso de existir lo
reemplazara, todo el proceso se ejecutara justo antes de Insertar, borrar o
actualizar cada dato en la tabla tienda.
En la instruccin Declare se declararon 2 variables ,la primera(user_oc) para
guardar el usuario oracle ,la segunda(action) para guardar la accin que se
realiza, esta ultima es para la bitcora.
En la instruccin Begin comienzan las instrucciones a ejecutar, en la primera
lnea (SELECT sys_context('USERENV' , 'CURRENT_USER') INTO user_oc from
dual) devuelve el usuario que ejecuta la accin y al poner INTO user_oc, guarda
el usuario en la variable que se declar antes por ultimo dual se utiliza para
seleccionar una seudocolumna como SYSDATE o USER. La tabla tiene una sola
columna VARCHAR2(1) llamada DUMMY que tiene un valor de 'X'.
Y segido se encuentran las instrucciones el primero permite insertar(INSERT)
los datos, en caso de no ser la instruccin que el usuario ejecuta entonces
ejecuta la actualizacin(UPDATE) y si esta instruccin no es la correspondiente
se ejecuta la de borrar(DELETE).
Al final la instruccin ejecutada ser almacenada en la tabla bitcora a
continuacin se describe los datos que se almacenan, un id que almacena un

valor que se auto incrementa, la tabla en la que se realiza el movimiento, el id


del registro modificado, agregado o borrado, la accin
realizada(INSERT,UPDATE,DELETE), la hora y fecha y por ltimo el usuario que
realiza dicha accin.
La ejecucion sera la siguiente:
insert into gerente.videojuegos values(1,'burnout 3','racing',250,40,1);
insert into gerente.videojuegos values(2,'dead space 2','gore',300,50,1);
update gerente.videojuegos set nom_juego='Skyrim' where cod_juego=2;
delete from gerente.videojuegos where cod_juego=2;

Vous aimerez peut-être aussi