Application de la vérification des clés primaires DEFERRABLES
Le comportement d'une contrainte de clé primaire ou unique DEFERRABLE dépend de sa spécification. PostgreSQL considère les scénarios d'application suivants :
1. DEFERRABLE INITIALLY IMMEDIATE
Les contraintes avec DEFERRABLE INITIALLY IMMEDIATE sont appliquées après chaque instruction, et non après chaque mise à jour de ligne, comme on pourrait s'y attendre. Cela signifie que :
2. DEFERRABLE INITIALLY DEFERRED
Les contraintes avec DEFERRABLE INITIALLY DEFERRED sont appliquées à la fin de la transaction, permettant ainsi plusieurs mises à jour au sein de la même transaction. Ceci est utile pour appliquer des contraintes sur plusieurs instructions.
3. Contraintes non-différables
Les contraintes déclarées comme NON DIFFÉRABLES sont vérifiées après chaque mise à jour de ligne, ce qui les rend plus strictes. Cela peut conduire à des violations de contraintes même lorsque la contrainte serait satisfaite à la fin de la commande.
Perspective historique
Dans les versions antérieures de PostgreSQL, les contraintes non différées ont également été vérifiés après chaque mise à jour de ligne. Ce comportement a été considéré comme un bug puis corrigé dans PostgreSQL 9.1.
Implications pratiques
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!