lunes, 14 de noviembre de 2016

DEFERRABLE o NOT DEFERRABLE

Diferir Restricciones 


Se puede diferir la comprobación de validez de las restricciones hasta el final de la transacción. Una restricción es diferida si el sistema comprueba que se satisface únicamente en el momento de la validación. Si se viola una restricción diferida, la validación provoca que se haga rollback de la transacción. Si una restricción es inmediata (no diferida), se comprueba al final de cada sentencia. Si se viola, se hace rollback de la sentencia de forma inmediata. Si una restricción provoca una acción (por ejemplo, DELETE CASCADE), esa acción se toma siempre como parte de la sentencia que la provocó, independientemente de que la restricción sea diferida o inmediata. Utilice la restricción SET CONSTRAINTS para especificar, para una transacción en particular, si se comprueban las restricciones diferibles después de cada sentencia DML o en el momento de la validación de la transacción. Para crear restricciones diferibles, debe crear un índice no único para esa restricción.

Puede definir restricciones como diferibles o no diferibles y como inicialmente diferidas o inicialmente inmediatas. Estos atributos pueden ser diferentes para cada restricción. 

Supuesto de uso: La política de la compañía dicta que el número de departamento 40 se debería cambiar a 45. El cambio de la columna DEPARTMENT_ID afecta a los empleados asignados a este departamento. Por tanto, haga que la clave primaria y las claves ajenas sean diferibles e inicialmente diferidas. Actualice la información de departamentos y empleados, y todas las filas se validarán en el momento de la validación.



Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?