Leí esto sobre la palabra clave SQL DEFERRABLE
en Database Systems - The Complete Book .
El último [NO DEFERRABLE] es el predeterminado y significa que cada vez que se ejecuta una instrucción de modificación de la base de datos, la restricción se verifica inmediatamente después, si la modificación podría violar la restricción de clave externa.
Sin embargo, si declaramos que una restricción es DEFERRABLE , entonces tenemos la opción de hacer que espere hasta que se complete una transacción antes de verificar la restricción.
Seguimos la palabra clave DEFERRABLE por cualquiera INICIALMENTE DIFERIDO o INICIALMENTE INMEDIATA . En el primer caso, la verificación se aplazará justo antes de que se confirme cada transacción. En este último caso, la verificación se realizará inmediatamente después de cada extracto.
¿En qué se NOT DEFERRABLE
diferencia de DEFERRABLE INITIALLY IMMEDIATE
? En ambos casos, al parecer, las restricciones se verifican después de cada declaración individual.
DEFERRABLE
establece la intención del diseñador de que diferir la restricción es una acción que vale la pena o es necesaria. Este no es el caso de la gran mayoría de las limitaciones de la base de datos y el etiquetado de todos, yaDEFERRABLE
que perdería esta útil distinción.