SET
SET — change un paramètre d'exécution
Synopsis
SET [ SESSION | LOCAL ] paramètre_configuration { TO | = } { valeur | 'valeur' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { fuseau-horaire | LOCAL | DEFAULT }
Description
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).
Paramètres
-
SESSION
-
Indique que la commande prend effet pour la session courante.
C'est la valeur par défaut lorsque SESSION et LOCAL sont
omis.
-
LOCAL
-
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.
-
paramètre_configuration
-
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.
-
valeur
-
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.
-
NAMES
-
SET NAMES
valeur
est un équivalent de
SET client_encoding TO
valeur
.
-
SEED
-
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);
-
TIME ZONE
-
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 :
-
'PST8PDT'
-
Le fuseau horaire de Berkeley, Californie.
-
'Europe/Rome'
-
Le fuseau horaire de l'Italie.
-
-7
-
Le fuseau horaire situé 7 heures à l'ouest de l'UTC
(équivalent à PDT). Les valeurs positives sont à l'est
de l'UTC.
-
INTERVAL '-08:00'
HOUR TO MINUTE
-
Le fuseau horaire situé 8 heures à l'ouest de l'UTC
(équivalent à PST).
-
LOCAL,
DEFAULT
-
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.
Exemples
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';
Compatibilité
SET TIME ZONE étend la syntaxe définie
dans le standard SQL. Le standard ne permet que des fuseaux
horaires numériques alors que PostgreSQL™ est plus souple dans les
syntaxes acceptées. Toutes les autres fonctionnalités de SET sont des extensions de PostgreSQL™.