86 - Vistas (with read only)


Primer problema:

Una empresa almacena la información de sus clientes en una tabla llamada "clientes".

1- Elimine la tabla:

 drop table clientes cascade constraints;

2- Cree la tabla:

 create table clientes(
  nombre varchar2(40),
  documento char(8),
  domicilio varchar2(30),
  ciudad varchar2(30)
 );

3- Ingrese algunos registros:

 insert into clientes values('Juan Perez','22222222','Colon 1123','Cordoba');
 insert into clientes values('Karina Lopez','23333333','San Martin 254','Cordoba');
 insert into clientes values('Luis Garcia','24444444','Caseros 345','Cordoba');
 insert into clientes values('Marcos Gonzalez','25555555','Sucre 458','Santa Fe');
 insert into clientes values('Nora Torres','26666666','Bulnes 567','Santa Fe');
 insert into clientes values('Oscar Luque','27777777','San Martin 786','Santa Fe');
 insert into clientes values('Pedro Perez','28888888','Colon 234','Buenos Aires');
 insert into clientes values('Rosa Rodriguez','29999999','Avellaneda 23','Buenos Aires');

4- Cree o reemplace la vista "vista_clientes" para que recupere el nombre y ciudad de todos los clientes

5- Cree o reemplace la vista "vista_clientes2" para que recupere el nombre y ciudad de todos los clientes no permita modificaciones.

6- Consulte ambas vistas

7- Intente ingresar el siguiente registro mediante la vista que permite sólo lectura
Oracle no lo permite.

8- Ingrese el registro anterior en la vista "vista_clientes"

9- Intente modificar un registro mediante la vista que permite sólo lectura

10- Actualice el registro anterior en la vista "vista_clientes"

11- Intente eliminar un registro mediante la vista "vista_clientes2"

12- Elimine todos los clientes de "Buenos Aires" a través de la vista "vista_clientes"

Ver solución

 drop table clientes cascade constraints;

 create table clientes(
  nombre varchar2(40),
  documento char(8),
  domicilio varchar2(30),
  ciudad varchar2(30)
 );

 insert into clientes values('Juan Perez','22222222','Colon 1123','Cordoba');
 insert into clientes values('Karina Lopez','23333333','San Martin 254','Cordoba');
 insert into clientes values('Luis Garcia','24444444','Caseros 345','Cordoba');
 insert into clientes values('Marcos Gonzalez','25555555','Sucre 458','Santa Fe');
 insert into clientes values('Nora Torres','26666666','Bulnes 567','Santa Fe');
 insert into clientes values('Oscar Luque','27777777','San Martin 786','Santa Fe');
 insert into clientes values('Pedro Perez','28888888','Colon 234','Buenos Aires');
 insert into clientes values('Rosa Rodriguez','29999999','Avellaneda 23','Buenos Aires');

 create or replace view vista_clientes
 as
  select nombre, ciudad
  from clientes;

 create or replace view vista_clientes2
 as
  select nombre, ciudad
  from clientes
  with read only;

 select *from vista_clientes;
 select *from vista_clientes2;

 insert into vista_clientes2 values ('Ana Acosta','Salta');

 insert into vista_clientes values ('Ana Acosta','Salta');

 update vista_clientes2 set ciudad='Salta' where nombre='Juan Perez';

 update vista_clientes set ciudad='Salta' where nombre='Juan Perez';

 delete from vista_clientes2 where ciudad='Buenos Aires';

 delete from vista_clientes where ciudad='Buenos Aires';

 


Retornar