Download as pdf or txt
Download as pdf or txt
You are on page 1of 11

Especialización en bases de datos

Programación de bases de datos


Juan Pablo Cañón Bonilla
juan.canon05@uptc.edu.co
Usuario BD: UPTC_Juan

--TRIGGER SERVIDOR

create or replace trigger trg_servidor

before insert or update or delete

on servidor

for each row

declare

vaccion varchar2(30);

vip varchar2(30);

vanterior varchar2(4000);

vnuevo varchar2(400);

vtabla varchar2(30):= 'SERVIDOR';

vcolumna varchar2(30);

vllave varchar2(4000);

procedure ins_auditoria is

begin

insert into auditoria

values (sysdate,vtabla, vcolumna, vanterior, vnuevo, user, vip, vaccion,

vllave);

end;

begin

vip := SYS_CONTEXT ('USERENV', 'IP_ADDRESS');


if inserting then vaccion := 'Insersion';

elsif updating then vaccion := 'Actualizacion';

else vaccion := 'Borrado';

end if;

vllave := nvl(:new.id_servidor,:old.id_servidor);

if :new.servidor != :old.servidor or (inserting) or (deleting)then

vnuevo := :new.servidor;

vanterior := :old.servidor;

vcolumna := 'SERVIDOR';

ins_auditoria;

end if;

if :new.NUMERO_CORES != :old.NUMERO_CORES or (inserting) or (deleting) then

vnuevo := :new.NUMERO_CORES;

vanterior := :old.NUMERO_CORES;

vcolumna := 'NUMERO_CORES';

ins_auditoria;

end if;

if :new.ID_SO != :old.ID_SO or (inserting) or (deleting)then

vnuevo := :new.ID_SO;

vanterior := :old.ID_SO;

vcolumna := 'ID_SO';

ins_auditoria;

end if;

if :new.HD_LOCAL != :old.HD_LOCAL or (inserting) or (deleting)then

vnuevo := :new.HD_LOCAL;

vanterior := :old.HD_LOCAL;

vcolumna := 'HD_LOCAL';

ins_auditoria;

end if;
if :new.RAM != :old.RAM or (inserting) or (deleting)then

vnuevo := :new.RAM;

vanterior := :old.RAM;

vcolumna := 'RAM';

ins_auditoria;

end if;

if :new.NUMERO_TARJETAS != :old.NUMERO_TARJETAS or (inserting) or

(deleting)then

vnuevo := :new.NUMERO_TARJETAS;

vanterior := :old.NUMERO_TARJETAS;

vcolumna := 'NUMERO_TARJETAS';

ins_auditoria;

end if;

if :new.PASSWORD_RUTH != :old.PASSWORD_RUTH or (inserting) or

(deleting)then

vnuevo := :new.PASSWORD_RUTH;

vanterior := :old.PASSWORD_RUTH;

vcolumna := 'PASSWORD_RUTH';

ins_auditoria;

end if;

if :new.INGENIERO_SOPORTE != :old.INGENIERO_SOPORTE or (inserting) or (deleting)then

vnuevo := :new.INGENIERO_SOPORTE;

vanterior := :old.INGENIERO_SOPORTE;

vcolumna := 'INGENIERO_SOPORTE';

ins_auditoria;

end if;

end trg_servidor;

/
-------------------------------------------------------------------------------------------------------
--TRIGGER INGENIEROS

create or replace trigger trg_ingenieros

before insert or update or delete

on ingenieros

for each row

declare

vaccion varchar2(30);

vip varchar2(30);

vanterior varchar2(4000);

vnuevo varchar2(400);

vtabla varchar2(30):= 'INGENIERO';

vcolumna varchar2(30);

vllave varchar2(4000);

procedure ins_auditoria is

begin

insert into auditoria

values (sysdate,vtabla, vcolumna, vanterior, vnuevo, user, vip, vaccion,

vllave);

end;

begin

vip := SYS_CONTEXT ('USERENV', 'IP_ADDRESS');

if inserting then vaccion := 'Insersion';

elsif updating then vaccion := 'Actualizacion';

else vaccion := 'Borrado';

end if;

vllave := nvl(:new.id_ingenieros,:old.id_ingenieros);
if :new.NOMBRE != :old.NOMBRE or (inserting) or (deleting)then

vnuevo := :new.NOMBRE;

vanterior := :old.NOMBRE;

vcolumna := 'NOMBRE';

ins_auditoria;

end if;

if :new.CONTACTO != :old.CONTACTO or (inserting) or (deleting) then

vnuevo := :new.CONTACTO;

vanterior := :old.CONTACTO;

vcolumna := 'CONTACTO';

ins_auditoria;

end if;

end trg_ingenieros;

-------------------------------------------------------------------------------------------------------
--TRIGGER SO

create or replace trigger trg_so

before insert or update or delete

on so

for each row

declare

vaccion varchar2(30);

vip varchar2(30);

vanterior varchar2(4000);
vnuevo varchar2(400);

vtabla varchar2(30):= 'SO';

vcolumna varchar2(30);

vllave varchar2(4000);

procedure ins_auditoria is

begin

insert into auditoria

values (sysdate,vtabla, vcolumna, vanterior, vnuevo, user, vip, vaccion,

vllave);

end;

begin

vip := SYS_CONTEXT ('USERENV', 'IP_ADDRESS');

if inserting then vaccion := 'Insersion';

elsif updating then vaccion := 'Actualizacion';

else vaccion := 'Borrado';

end if;

vllave := nvl(:new.id_so,:old.id_so);

if :new.so != :old.so or (inserting) or (deleting)then

vnuevo := :new.so;

vanterior := :old.so;

vcolumna := 'SO';

ins_auditoria;

end if;

if :new.VERSION != :old.VERSION or (inserting) or (deleting) then

vnuevo := :new.VERSION;

vanterior := :old.VERSION;

vcolumna := 'VERSION';

ins_auditoria;
end if;

if :new.ID_FABRICANTE != :old.ID_FABRICANTE or (inserting) or (deleting)then

vnuevo := :new.ID_FABRICANTE;

vanterior := :old.ID_FABRICANTE;

vcolumna := 'ID_FABRICANTE';

ins_auditoria;

end if;

if :new.ID_ARQUITECTURA != :old.ID_ARQUITECTURA or (inserting) or

(deleting)then

vnuevo := :new.ID_ARQUITECTURA;

vanterior := :old.ID_ARQUITECTURA;

vcolumna := 'ID_ARQUITECTURA';

ins_auditoria;

end if;

end trg_so;

-------------------------------------------------------------------------------------------------------
--TRIGGER APLICACIONES

create or replace trigger trg_aplicaciones

before insert or update or delete

on aplicaciones

for each row

declare

vaccion varchar2(30);

vip varchar2(30);

vanterior varchar2(4000);

vnuevo varchar2(400);
vtabla varchar2(30):= 'APLICACION';

vcolumna varchar2(30);

vllave varchar2(4000);

procedure ins_auditoria is

begin

insert into auditoria

values (sysdate,vtabla, vcolumna, vanterior, vnuevo, user, vip, vaccion, vllave);

end;

begin

vip := SYS_CONTEXT ('USERENV', 'IP_ADDRESS');

if inserting then vaccion := 'Insersion';

elsif updating then vaccion := 'Actualizacion';

else vaccion := 'Borrado';

end if;

vllave := nvl(:new.id_aplicaciones,:old.id_aplicaciones);

if :new.NOMBRE != :old.NOMBRE or (inserting) or (deleting)then

vnuevo := :new.NOMBRE;

vanterior := :old.NOMBRE;

vcolumna := 'NOMBRE';

ins_auditoria;

end if;

if :new.LENGUAJE != :old.LENGUAJE or (inserting) or (deleting) then

vnuevo := :new.LENGUAJE;

vanterior := :old.LENGUAJE;

vcolumna := 'LENGUAJE';

ins_auditoria;

end if;

if :new.BASE_DATOS != :old.BASE_DATOS or (inserting) or (deleting)

then
vnuevo := :new.BASE_DATOS;

vanterior := :old.BASE_DATOS;

vcolumna := 'BASE_DATOS';

ins_auditoria;

end if;

if :new.TIPO_SERVIDOR_WEB != :old.TIPO_SERVIDOR_WEB or (inserting) or (deleting)then

vnuevo := :new.TIPO_SERVIDOR_WEB;

vanterior := :old.TIPO_SERVIDOR_WEB;

vcolumna := 'TIPO_SERVIDOR_WEB';

ins_auditoria;

end if;

if :new.NRO_MAX_USUARIOS != :old.NRO_MAX_USUARIOS or (inserting) or (deleting)then

vnuevo := :new.NRO_MAX_USUARIOS;

vanterior := :old.NRO_MAX_USUARIOS;

vcolumna := 'NRO_MAX_USUARIOS';

ins_auditoria;

end if;

end trg_aplicaciones;

-------------------------------------------------------------------------------------------------------
--TRIGGER ARQUITECTURA
create or replace trigger trg_arquitectura

before insert or update or delete

on arquitectura

for each row

declare

vaccion varchar2(30);

vip varchar2(30);
vanterior varchar2(4000);

vnuevo varchar2(400);

vtabla varchar2(30):= 'ARQUITECTURA';

vcolumna varchar2(30);

vllave varchar2(4000);

procedure ins_auditoria is

begin

insert into auditoria

values (sysdate,vtabla, vcolumna, vanterior, vnuevo, user, vip, vaccion,vllave);

end;

begin

vip := SYS_CONTEXT ('USERENV', 'IP_ADDRESS');

if inserting then vaccion := 'Insersion';

elsif updating then vaccion := 'Actualizacion';

else vaccion := 'Borrado';

end if;

vllave := nvl(:new.id_arquitectura,:old.id_arquitectura);

if :new.ARQUITECTURA != :old.ARQUITECTURA or (inserting) or (deleting)then

vnuevo := :new.ARQUITECTURA;

vanterior := :old.ARQUITECTURA;

vcolumna := 'ARQUITECTURA';

ins_auditoria;

end if;

if :new.NUMERO_CORES != :old.NUMERO_CORES or (inserting) or (deleting)then

vnuevo := :new.NUMERO_CORES;

vanterior := :old.NUMERO_CORES;

vcolumna := 'NUM_CORES';

ins_auditoria;
end if;

end trg_arquitectura;

COMPROBACION DE FUNCIONAMIENTO DE LOS TRIGGERS

You might also like