SET

Nom

SET -- change un paramètre d'exécution

Synopsis

SET [ SESSION | LOCAL ] nom { TO | = } { valeur | 'valeur' | DEFAULT }
SET [ SESSION | LOCAL ] TIME ZONE { fuseau-horaire | LOCAL | DEFAULT }

Description

La commande SET change des paramètres d'exécution. Beaucoup des paramètres d'exécution listés dans Section 16.4 peuvent être changés à la volée avec la commande SET. (Mais certains nécessitent d'être un superutilisateur pour les changer, et d'autres ne peuvent être changé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.

Si SET ou SET SESSION sont utilisés dans une transaction qui est ensuite abandonnée, les effets de la commande SET disparaissent lorsque la transaction est annulée. (Ce comportement a changé 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.) Une fois que 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 si ni SESSION ni LOCAL n'apparaissent.

LOCAL

Indique que la commande n'est effective que pour la transaction courante. Après COMMITou ROLLBACK, la valeur utilisée pour la session redevient effective. Notez qu'une commande SET LOCAL semblera sans effet si elle est exécutée en dehors d'un bloc BEGIN car la transaction prend immédiatement fin.

nom

Nom d'un paramètre ajustable pendant l'exécution. La liste des paramètres disponibles est documentée dans Section 16.4 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és par des virgules. DEFAULT peut être utilisé pour remettre le paramètre à sa valeur par défaut.

En plus des paramètres de configuration documentés dans Section 16.4, il y en a quelques autres qui ne peuvent être utilisés qu'avec la commande SET ou qui ont une syntaxe spéciale.

NAMES

SET NAMES valeur est un équivalent de SET client_encoding TO valeur.

SEED

Donne une valeur initiale au 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. Voici des exemples de valeurs valides (mais certaines ne sont pas acceptées sur toutes les plates-formes.)

'PST8PDT'

Le fuseau horaire de Berkeley, Californie.

'Portugal'

Le fuseau horaire du Portugal.

'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 pour de plus amples informations sur les fuseaux horaires.

Notes

La fonction set_config propose des fonctionnalités équivalentes. Voir Section 9.13.

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, en utilisant des guillemets pour préserver les majuscules dans les noms de fuseaux horaires :

SET TIME ZONE 'PST8PDT';
SELECT current_timestamp AS today;

             today
-------------------------------
 2003-04-29 15:02:01.218622-07

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 autre fonctionnalités de SET sont des extensions de PostgreSQL.

Voir aussi

RESET, SHOW