SET [ SESSION | LOCAL ] paramètre_configuration { TO | = } { valeur | 'valeur' | DEFAULT } SET [ SESSION | LOCAL ] TIME ZONE { fuseau-horaire | LOCAL | DEFAULT }
La commande SET permet de modifier les paramètres d'exécution. Un grand nombre de paramètres d'exécution, listés dans Chapitre 17, Configuration du serveur, peuvent être modifiés à la volée avec la commande SET. SET ne modifie que les paramètres utilisés par la session courante.
Certains paramètres ne peuvent être modifiés que par le superutilisateur, d'autres ne peuvent plus être changés après le démarrage du serveur ou de la session.
Si SET ou SET SESSION sont utilisés dans une transaction abandonnée par la suite, les effets de la commande SET disparaissent dès l'annulation de la transaction. Ce comportement a été modifé par rapport aux versions antérieures à la 7.3, pour lesquelles les effets de la commande SET n'étaient pas annulés dans ce cas. Lorsque la transaction englobant la commande est validée, les effets de la commande persistent jusqu'à la fin de la session, à moins qu'ils ne soient annulés par une autre commande SET.
Les effets de SET LOCAL ne durent que jusqu'à la fin de la transaction en cours, qu'elle soit validée ou non. Dans le cas particulier d'une commande SET suivie par SET LOCAL dans une même transaction, la valeur de SET LOCAL est utilisée jusqu'à la fin de la transaction, et celle de SET prend effet ensuite (si la transaction est validée).
Indique que la commande prend effet pour la session courante. C'est la valeur par défaut lorsque SESSION et LOCAL sont omis.
Indique que la commande n'est effective que pour la transaction courante. Après COMMIT ou ROLLBACK, la valeur de session redevient effective. Une commande SET LOCAL est sans effet si elle est exécutée en dehors d'un bloc BEGIN car la transaction prend immédiatement fin.
Nom d'un paramètre ajustable pendant l'exécution. La liste des paramètres disponibles est documentée dans Chapitre 17, Configuration du serveur et ci-dessous.
Nouvelle valeur du paramètre. Les valeurs peuvent être indiquées sous forme de constantes de chaîne, d'identifiants, de nombres ou de listes de ceux-ci, séparées par des virgules. DEFAULT peut être utilisé pour repositionné le paramètre à sa valeur par défaut.
En plus des paramètres de configuration documentés dans Chapitre 17, Configuration du serveur, il y en a quelques autres qui ne peuvent être initialisés qu'avec la commande SET ou ont une syntaxe spéciale.
SET NAMES valeur est un équivalent de SET client_encoding TO valeur.
Précise la valeur interne du générateur de nombres aléatoires (la fonction random). Les valeurs autorisées sont des nombres à virgule flottante entre 0 et 1, qui sont ensuite multipliés par 231-1.
Le générateur de nombres aléatoires peut aussi être initialisé en appelant la fonction setseed :
SELECT setseed(valeur);
SET TIME ZONE valeur est équivalent à SET timezone TO valeur. La syntaxe SET TIME ZONE permet d'utiliser une syntaxe spéciale pour indiquer le fuseau horaire. Quelques exemples de valeurs valides :
Le fuseau horaire de Berkeley, Californie.
Le fuseau horaire de l'Italie.
Le fuseau horaire situé 7 heures à l'ouest de l'UTC (équivalent à PDT). Les valeurs positives sont à l'est de l'UTC.
Le fuseau horaire situé 8 heures à l'ouest de l'UTC (équivalent à PST).
Utilise le fuseau horaire local (celui du système d'exploitation du serveur).
Voir Section 8.5.3, « Fuseaux horaires » pour de plus amples informations sur les fuseaux horaires.
La fonction set_config propose des fonctionnalités équivalentes. Voir Section 9.20, « Fonctions d'administration système ».
Mettre à jour le chemin de recherche :
SET search_path TO my_schema, public;
Utiliser le style de date traditionnel POSTGRES™ avec comme convention de saisie « les jours avant les mois » :
SET datestyle TO postgres, dmy;
Utiliser le fuseau horaire de Berkeley, Californie :
SET TIME ZONE 'PST8PDT';
Utiliser le fuseau horaire de l'Italie :
SET TIME ZONE 'Europe/Rome';