VISTAS WITH CHECK OPTION PDF

Summary

Este documento explica las cláusulas WITH CHECK OPTION, WITH LOCAL CHECK OPTION y WITH CASCADE CHECK OPTION en SQL, que se utilizan para controlar la integridad de las vistas. Proporciona ejemplos que muestran cómo estas cláusulas funcionan en diferentes escenarios, incluyendo la inserción y actualización de datos.

Full Transcript

WITH CHECK OPTION Ejemplo: Imagina que tenemos una tabla llamada Empleados con las columnas Nombre, Departamento y Salario. Creamos una vista llamada Empleados_Ventas que solo muestra a los empleados del departamento de ventas: SQL CREATE VIEW Empleados_Ventas AS SELECT Nombre, Salario FROM Emplea...

WITH CHECK OPTION Ejemplo: Imagina que tenemos una tabla llamada Empleados con las columnas Nombre, Departamento y Salario. Creamos una vista llamada Empleados_Ventas que solo muestra a los empleados del departamento de ventas: SQL CREATE VIEW Empleados_Ventas AS SELECT Nombre, Salario FROM Empleados WHERE Departamento = 'Ventas'; Si agregamos la cláusula WITH CHECK OPTION a esta vista: SQL CREATE VIEW Empleados_Ventas AS SELECT Nombre, Salario FROM Empleados WHERE Departamento = 'Ventas' WITH CHECK OPTION; ¿Qué significa esto? Al insertar o actualizar datos a través de esta vista, el sistema verificará automáticamente si el nuevo dato cumple con la condición de la vista (en este caso, si el empleado pertenece al departamento de ventas). Si el nuevo dato no cumple la condición, la operación se cancelará y se producirá un error. Ejemplo práctico: Si intentamos insertar un nuevo empleado con el departamento de "Marketing" a través de la vista Empleados_Ventas, la operación fallará porque no cumple con la condición de la vista. WITH LOCAL CHECK OPTION Ejemplo: Consideremos ahora que tenemos otra vista llamada Empleados_Ventas_Alto_Salario que se basa en la vista Empleados_Ventas y filtra a los empleados con un salario mayor a 50.000: SQL CREATE VIEW Empleados_Ventas_Alto_Salario AS SELECT * FROM Empleados_Ventas WHERE Salario > 50000 WITH LOCAL CHECK OPTION; ¿Qué significa esto? La cláusula WITH LOCAL CHECK OPTION solo verifica la integridad de la vista actual. Si intentamos insertar o actualizar datos a través de Empleados_Ventas_Alto_Salario, se verificará si el nuevo dato cumple con la condición de esta vista (salario mayor a 50.000). No se verificarán las condiciones de las vistas de las que depende (en este caso, Empleados_Ventas). Ejemplo práctico: Si intentamos insertar un empleado con un salario de 40.000 a través de Empleados_Ventas_Alto_Salario, la operación fallará porque no cumple con la condición de esta vista. Sin embargo, si el empleado ya existe en Empleados_Ventas y se intenta actualizar su salario a 40.000 a través de Empleados_Ventas_Alto_Salario, la operación podría tener éxito, ya que la verificación solo se hace a nivel de esta vista. WITH CASCADE CHECK OPTION Ejemplo: Utilizando las mismas vistas de los ejemplos anteriores, si agregamos la cláusula WITH CASCADE CHECK OPTION a la vista Empleados_Ventas_Alto_Salario: SQL CREATE VIEW Empleados_Ventas_Alto_Salario AS SELECT * FROM Empleados_Ventas WHERE Salario > 50000 WITH CASCADE CHECK OPTION; ¿Qué significa esto? La cláusula WITH CASCADE CHECK OPTION verifica la integridad de la vista actual y de todas las vistas de las que depende. Si intentamos insertar o actualizar datos a través de Empleados_Ventas_Alto_Salario, se verificará si el nuevo dato cumple con las condiciones de esta vista y de la vista Empleados_Ventas. Ejemplo práctico: En este caso, si intentamos insertar un empleado con un salario de 40.000 o cambiar el departamento de un empleado a "Marketing" a través de Empleados_Ventas_Alto_Salario, la operación fallará porque no cumple con las condiciones de al menos una de las vistas involucradas. Resumen WITH CHECK OPTION: Verifica la integridad de la vista actual. WITH LOCAL CHECK OPTION: Verifica la integridad de la vista actual, sin considerar las vistas dependientes. WITH CASCADE CHECK OPTION: Verifica la integridad de la vista actual y de todas las vistas dependientes.

Use Quizgecko on...
Browser
Browser