SET CONSTRAINTS

Nom

SET CONSTRAINTS -- initialise le mode de contrainte de la transaction en cours

Synopsis

SET CONSTRAINTS { ALL | nom [, ...] } { DEFERRED | IMMEDIATE }

Description

SET CONSTRAINTS iniitialise le comportement de l'évaluation de la contrainte dans la transaction en cours. Dans le mode IMMEDIATE, les contraintes sont vérifiées à la fin de chaque instruction. Dans le mode DEFERRED, les contraintes ne sont vérifiées qu'à la validation de la transaction.

Lorsque vous changez le mode d'une contrainte pour IMMEDIATE, le nouveau mode de contrainte prend effet rétroactivement : toutes les modifications de données qui auraient pu avoir été vérifiées à la fin de la transaction (lors de l'utilisation de DEFERRED) sont vérifiées à l'exécution de la commande SET CONSTRAINTS.

À la création, une contrainte se voit toujours donner une des trois caractéristiques : INITIALLY DEFERRED, INITIALLY IMMEDIATE DEFERRABLE ou INITIALLY IMMEDIATE NOT DEFERRABLE. La troisième classe n'est pas affectée par la commande SET CONSTRAINTS.

Actuellement, seules les contraintes de clés étrangères sont affectées par ce paramétrage. Les contraintes de vérification et les contraintes uniques sont toujours immédiates initialement.

Notes

Cette commande altère seulement le comportement des contraintes à l'intérieur de la transaction en cours. Du coup, si vous exécutez cette commande en dehors d'un bloc de transaction (pair BEGIN/COMMIT), il ne semblera pas avoir d'effets. Si vous souhaitez modifier le comportement d'une contrainte sans avoir besoin de lancer une commande SET CONSTRAINTS dans chaque transaction, spécifiez INITIALLY DEFERRED ou INITIALLY IMMEDIATE à la création de la contrainte.

Compatibilité

Cette commande est compatible avec le comportement défini par le standard SQL sauf en ce qui concerne la limitation. Dans PostgreSQL, il s'applique uniquement aux contraintes de clés étrangères.