You are on page 1of 2

create table libro(

codigo number,
titulo varchar2(60),
autor varchar2(40),
editorial varchar2(40),
precio number(6,2));
create table controles(
usuario varchar2(20),
fecha date,
codigolib number,
precioanterior number(6,2),
precionuevo number(6,2));
insert
insert
insert
insert
insert

into
into
into
into
into

libro
libro
libro
libro
libro

values(100,'La Odisea','William','Don Bosco',100);


values(101,'El Alfabeto','Javier','PUCESD',50);
values(102,'La Iliada','Luis','NHL',80);
values(103,'El Infierno de Dante','Dante','MgGraw',30);
values(104,'Codigo Libre','Carlos','La U',50);

select * from libro;


select * from controles;
create or replace trigger tr_act_prec_lib
before update of precio
on libro
for each row
begin
insert into controles values(user,sysdate,:old.codigo,:old.precio,:new.p
recio);
end tr_act_prec_lib;
update libro set editorial='1234' where codigo=100;
update libro set precio=25 where codigo=101;
create or replace trigger tr_act_prec_lib
before update of precio
on libro
for each row
begin
if(:new.precio>30) then
:new.precio:=floor(:new.precio);
end if;
insert into controles values(user,sysdate,:new.codigo,:old.precio,:new.p
recio);
end tr_act_prec_lib;
update libro set precio=44.99 where codigo=101;
alter trigger tr_act_prec_lib disable;
create or replace trigger tr_libro
before insert or update or delete
on libro
for each row
begin
insert into controles values(user,sysdate,:old.codigo,:old.precio,:new.p
recio);

end tr_libro;
select * from libro;
select * from controles;
truncate table controles;
insert into libro values(109,'Codigo Libre','Carlos','La U',50);
insert into libro values(110,'Copyright','Carlos','La U',50);
update libro set precio=200 where codigo=110;
delete from libro where codigo=110;

You might also like