88 - Vistas (with check option)


Primer problema:

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

1- Elimine la tabla:

 drop table clientes;

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 que no sean de "Cordoba" sin emplear "with check option"

5- Cree o reemplace la vista "vista_clientes2" para que recupere el nombre y ciudad de todos los clientes que no sean de "Cordoba" empleando "with check option"

6- Consulte ambas vistas

7- Intente modificar la ciudad del cliente "Pedro Perez" a "Cordoba" través de la vista que está restringida.

8- Realice la misma modificación que intentó en el punto anterior a través de la vista que no está restringida

9- Actualice la ciudad del cliente "Oscar Luque" a "Buenos Aires" mediante la vista restringida

10- Verifique que "Oscar Luque" aún se incluye en la vista

11- Intente ingresar un empleado de "Cordoba" en la vista restringida

12- Ingrese el empleado anterior a través de la vista no restringida

13- Ingrese un empleado de "Salta" en la vista restringida

14- Verifique que el nuevo registro está incluido en la vista

Ver solución

 drop table clientes;

 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
  where ciudad <>'Cordoba';

 create or replace view vista_clientes2
 as
  select nombre, ciudad
  from clientes
  where ciudad <>'Cordoba'
  with check option;

 select *from vista_clientes;
 select *from vista_clientes2;

 update vista_clientes2 set ciudad='Cordoba' where nombre='Pedro Perez';

 update vista_clientes set ciudad='Cordoba' where nombre='Pedro Perez';

 update vista_clientes2 set ciudad='Buenos Aires' where nombre='Oscar Luque';

 select *from vista_clientes2;

 insert into vista_clientes2 values('Viviana Valdez','Cordoba');

 insert into vista_clientes values('Viviana Valdez','Cordoba');

 insert into vista_clientes2 values('Viviana Valdez','Salta');

 select *from vista_clientes2;

 


Retornar