SET — change un paramètre d'exécution
SET [ SESSION | LOCAL ]paramètre_configuration{ TO | = } {valeur| 'valeur' | DEFAULT } SET [ SESSION | LOCAL ] TIME ZONE {valeur| 'valeur' | 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 19, peuvent être modifiés à la volée avec la commande
SET. (Certains paramètres peuvent être modifiés
uniquement par les superutilisateurs et les utilisateurs qui bénéficient du
droit SET sur ce paramètre. Il existe aussi des paramètres
qui ne peuvent pas être modifiés après le démarrage du serveur ou de la
session.) 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. 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).
Les effets de SET et SET LOCAL sont
aussi annulés par le retour à un point de sauvegarde précédant la
commande.
Si SET LOCAL est utilisé à l'intérieur d'une fonction qui
comprend l'option SET pour la même variable (voir
CREATE FUNCTION),
les effets de la commande SET LOCAL disparaîtront à la
sortie de la fonction ; en fait, la valeur disponible lors de l'appel
de la fonction est restaurée de toute façon. Ceci permet l'utilisation de
SET LOCAL pour des modifications dynamiques et répétées
d'un paramètre à l'intérieur d'une fonction, avec l'intérêt d'utiliser
l'option SET pour sauvegarder et restaurer la valeur de
l'appelant. Néanmoins, une commande SET standard surcharge
toute option SET de la fonction ; son effet
persistera sauf en cas d'annulation.
De PostgreSQL version 8.0 à 8.2, les effets de
SET LOCAL sont annulés suite au relachement d'un point
de sauvegarde précédent, ou par une sortie avec succès d'un bloc d'exception
PL/pgSQL. Ce comportement a été modifié car
il n'était pas du tout intuitif.
SESSION
Indique que la commande prend effet pour la session courante.
C'est la valeur par défaut lorsque SESSION et
LOCAL sont omis.
LOCALIndique que la commande n'est effective que pour la transaction courante. Utiliser cette option en dehors d'une transaction émet un avertissement et n'a aucun autre effet.
paramètre_configurationNom d'un paramètre ajustable pendant l'exécution. La liste des paramètres disponibles est documentée dans Chapitre 19 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, de façon approprié
pour ce paramètre.
DEFAULT peut être utilisé pour repositionner le
paramètre à sa valeur par défaut (c'est-à-dire quelque soit la valeur
qu'il aurait eu si aucun SET n'avait été exécuté
lors de cette session).
En plus des paramètres de configuration documentés dans Chapitre 19, il y en a quelques autres qui ne peuvent
être initialisés qu'avec la commande SET ou
ont une syntaxe spéciale.
SCHEMA
SET SCHEMA ' est
un alias pour valeur'SET search_path TO
. Seul un schéma peut être
précisé en utilisant cette syntaxe.
valeur
NAMES
SET NAMES est un équivalent de
valeurSET 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
-1 et 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 ' est équivalent à
valeur'SET timezone TO '.
La syntaxe valeur'SET TIME ZONE permet d'utiliser une
syntaxe spéciale pour indiquer le fuseau horaire.
Quelques exemples de valeurs valides :
'America/Los_Angeles'Le fuseau horaire de Berkeley, Californie.
'Europe/Rome'Le fuseau horaire de l'Italie.
-7Le 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 MINUTELe fuseau horaire situé 8 heures à l'ouest de l'UTC (équivalent à PST).
LOCALDEFAULT
Utilise le fuseau horaire local (c'est-à-dire la valeur
timezone par défaut du serveur).
Les réglages du fuseau horaire fournis en nombre ou intervalles sont
convertis en interne en syntaxe de fuseau horaire POSIX. Par exemple,
après avoir effectué SET TIME ZONE -7,
SHOW TIME ZONE afficherait <-07>+07.
Les abréviations de fuseaux horaires ne sont pas acceptées par
SET ; voir Section 8.5.3
pour de plus amples informations sur les fuseaux horaires.
La fonction set_config propose des fonctionnalités
équivalentes. Voir Section 9.28.1.
De plus, il est possible de mettre à jour (via UPDATE) la vue système
pg_settings
pour réaliser l'équivalent de SET.
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 'America/Los_Angeles';
Utiliser le fuseau horaire de l'Italie :
SET TIME ZONE 'Europe/Rome';
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.