

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.
   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. no effect.
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 des fuseaux horaires ne sont pas supportées par la
       commande 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.26.
   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.