0 évaluation0% ont trouvé ce document utile (0 vote)
58 vues2 pages
El trigger trigBackUpTienda realiza respaldos de la tabla tienda en la tabla tienda_copia antes de cualquier inserción, eliminación o actualización en tienda. El trigger almacena el usuario, la acción y los datos antiguos y nuevos en tienda_copia y registra la acción, fecha, usuario y datos en la tabla bitácora.
El trigger trigBackUpTienda realiza respaldos de la tabla tienda en la tabla tienda_copia antes de cualquier inserción, eliminación o actualización en tienda. El trigger almacena el usuario, la acción y los datos antiguos y nuevos en tienda_copia y registra la acción, fecha, usuario y datos en la tabla bitácora.
El trigger trigBackUpTienda realiza respaldos de la tabla tienda en la tabla tienda_copia antes de cualquier inserción, eliminación o actualización en tienda. El trigger almacena el usuario, la acción y los datos antiguos y nuevos en tienda_copia y registra la acción, fecha, usuario y datos en la tabla bitácora.
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;