J'ai lu ceci à propos du mot-clé SQL DEFERRABLEdans Database Systems - The Complete Book .
Le dernier [NOT DEFERRABLE] est la valeur par défaut, et signifie que chaque fois qu'une instruction de modification de base de données est exécutée, la contrainte est vérifiée immédiatement après, si la modification peut violer la contrainte de clé étrangère.
Cependant, si nous déclarons qu'une contrainte est DEFERRABLE , nous avons la possibilité de la faire attendre qu'une transaction soit terminée avant de vérifier la contrainte.
Nous suivons le mot-clé DEFERRABLE soit INITIALLY DEFERRED soit INITIALLY IMMEDIATE . Dans le premier cas, la vérification sera reportée juste avant la validation de chaque transaction. Dans ce dernier cas, le contrôle sera effectué immédiatement après chaque relevé.
En quoi est-ce NOT DEFERRABLEdifférent de DEFERRABLE INITIALLY IMMEDIATE? Dans les deux cas, il semble que toutes les contraintes sont vérifiées après chaque déclaration individuelle.

DEFERRABLEindique l'intention du concepteur selon laquelle le report de la contrainte est une action valable ou nécessaire. Ce n'est pas le cas pour la grande majorité des contraintes de base de données et l'étiquetage du tout carDEFERRABLEcela perdrait cette distinction utile.