1. 1.- En la BD EMPLEADOS crea una vista de nombre v_vendedores_oeste que muestre los
nombres de los vendedores de la región OESTE. Realiza la instrucción que muestra los datos de
la vista.
CREATE VIEW v_vendedores_oeste AS SELECT NOMBRE, REGION FROM repventas,
oficina WHERE REGION="OESTE";
2. En la BD EMPLEADOS crea la vista v_pedidos_clientes_del_vend102 que contenga solamente
los pedidos remitidos por clientes asignados al vendedor 102.
CREATE VIEW v_pedidos_clientes_del_vend102 AS SELECT PRODUCTO,
FECHA_PEDIDO, DESCRIPCION, PRECIO, REPCLIE, NUM_EMPL FROM pedido,
producto, cliente, repventas WHERE cliente.REPCLIE=102 AND
repventas.NUM_EMPL=102;
3.- En la BD EMPLEADOS definir una vista de nombre v_cliente_y_su_vendedor sobre la tabla
CLIENTE que incluya únicamente los nombres de los clientes y los vendedores a los que están
asignados.
CREATE VIEW v_cliente_y_su_vendedor AS SELECT NOMBRE, EMPRESA FROM
repventas, cliente WHERE repventas.NUM_EMPL=cliente.REPCLIE;
4.- En la BD EMPLEADOS crea una vista de nombre v_oficinas_ventas_altas que devuelva todos
los datos de las oficinas con ventas superiores a 500.000.
CREATE VIEW v_oficina_ventas_altas AS SELECT * FROM oficina WHERE VENTAS >
500000;
5.- Utilizando transacciones para no realizar los cambios en la BD, ejecuta la consulta que inserte
una nueva oficina a través de la vista v_oficinas_ventas_altas con los siguientes datos:
OFICINA CIUDAD REGION DIR OBJETIVO VENTAS
77 NEGREIRA NOROESTE 105 300000 100000
¿Te permite hacer la inserción? Si es así comprueba si se ha añadido la fila y deshaz la
transacción. Si no te lo permite ¿sabrías explicar por qué?
Si lo permite porque hay una relación uno a uno entre los registros que se van a insertar y
la tabla subyacente y además se cumplen las cuatro siguientes condiciones:
o Se seleccionan datos solamente de la tabla oficinas.
o Los atributos de dicha tabla no contienen alguna restricción de tipo NOT NULL.
o No hay subconsultas que se refieran a la tabla oficinas.
o No se utiliza GROUP BY o AGREGGATION.
6.- Modifica la vista v_oficinas_ventas_altas añadiéndole la cláusula WITH CHECK OPTION. A
continuación, intenta, usando transacciones, insertar la misma fila de antes en la tabla OFICINA,
pero a través de la vista. ¿Te permite hacer la inserción? Si es así comprueba si se ha añadido la
fila y deshaz la transacción. Si no te lo permite ¿sabrías explicar por qué?
Con la cláusula WITH CHECK OPTION no podremos modificar la tabla porque esta
cláusula se utiliza en una vista actualizable para evitar inserciones o actualizaciones
excepto en los registros en que la cláusula WHERE de la sentencia_select se evalúe como
true.