viernes, 11 de noviembre de 2016

WITH CHECK OPTION

Uso de la Cláusula WITH CHECK OPTION 
Puede garantizar que las operaciones DML realizadas en la vista permanezcan dentro del dominio de la misma mediante la cláusula WITH CHECK OPTION :

CREATE OR REPLACE VIEW empvu20
AS SELECT *
  FROM   employees
  WHERE  department_id = 20;

WITH CHECK OPTION  CONSTRAINT empvu20_ck;
El intento de cambiar el número de departamento de cualquier fila de la vista fallará porque viola la restricción WITH CHECK OPTION :

Es posible realizar comprobaciones de integridad referencial a través de las vistas. Puede forzar restricciones en el nivel de base de datos. La vista se puede utilizar para proteger la integridad de los datos, pero el uso está muy limitado.

La cláusula WITH CHECK OPTION  especifica que las inserciones (INSERT) y las actualizaciones (UPDATE) realizadas a través de la vista no se pueden seleccionar, con lo que permite que las restricciones de integridad y las comprobaciones de validación de datos se fuercen en los datos que se estén insertando o actualizando. Si intenta realizar operaciones DML en filas que no haya seleccionado la vista, se mostrará un error, junto con el nombre de restricción si se ha especificado. 
UPDATE empvu20
SET  department_id = 10
WHERE employee_id = 201;

provoca: 
ERROR at line 1:
ORA-01402: view WITH CHECK OPTION where-clause violation 
Nota: No se actualiza ninguna fila porque, si el número de departamento se tuviera que cambiar a 10, la vista ya no sería capaz de ver ese empleado. Con la cláusula WITH CHECK OPTION, por lo tanto, la vista puede ver únicamente a los empleados del departamento 20 y no permite que se cambie el número de departamento para esos empleados a través de la vista. 

Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?