105 - Disparador de inserción a nivel de sentencia |
Una librería almacena los datos de sus libros en una tabla denominada "libros" y en una tabla "ofertas", algunos datos de los libros cuyo precio no supera los $30. Además, controla las inserciones que los empleados realizan sobre "ofertas", almacenando en la tabla "control" el nombre del usuario, la fecha y hora, cada vez que se ingresa un nuevo registro en la tabla "ofertas".
1- Elimine las tres tablas:
drop table libros; drop table ofertas; drop table control;
2- Cree las tablas con las siguientes estructuras:
create table libros( codigo number(6), titulo varchar2(40), autor varchar2(30), editorial varchar2(20), precio number(6,2) ); create table ofertas( titulo varchar2(40), autor varchar2(30), precio number(6,2) ); create table control( usuario varchar2(30), fecha date );
3- Establezca el formato de fecha para que muestre "DD/MM/YYYY HH24:MI":
4- Cree un disparador que se dispare cuando se ingrese un nuevo registro en "ofertas"; el trigger debe ingresar en la tabla "control", el nombre del usuario, la fecha y la hora en la cual se realizó un "insert" sobre "ofertas"
5- Vea qué informa el diccionario "user_triggers" respecto del trigger anteriormente creado
6- Ingrese algunos registros en "libros"
insert into libros values(100,'Uno','Richard Bach','Planeta',25); insert into libros values(102,'Matematica estas ahi','Paenza','Nuevo siglo',12); insert into libros values(105,'El aleph','Borges','Emece',32); insert into libros values(120,'Aprenda PHP','Molina Mario','Nuevo siglo',55);7- Ingrese en "ofertas" los libros de "libros" cuyo precio no superen los $30, utilizando la siguiente sentencia:
insert into ofertas select titulo,autor,precio from libros where precio<30;
8- Verifique que el trigger se disparó consultando la tabla "control"
Ver solucióndrop table libros; drop table ofertas; drop table control; create table libros( codigo number(6), titulo varchar2(40), autor varchar2(30), editorial varchar2(20), precio number(6,2) ); create table ofertas( titulo varchar2(40), autor varchar2(30), precio number(6,2) ); create table control( usuario varchar2(30), fecha date ); alter session set NLS_DATE_FORMAT = 'DD/MM/YYYY HH24:MI'; create or replace trigger tr_ingresar_ofertas before insert on ofertas begin insert into Control values(user,sysdate); end tr_ingresar_ofertas; / select *from user_triggers where trigger_name ='TR_INGRESAR_OFERTAS'; insert into libros values(100,'Uno','Richard Bach','Planeta',25); insert into libros values(102,'Matematica estas ahi','Paenza','Nuevo siglo',12); insert into libros values(105,'El aleph','Borges','Emece',32); insert into libros values(120,'Aprenda PHP','Molina Mario','Nuevo siglo',55); insert into ofertas select titulo,autor,precio from libros where precio<30; select *from control;