Type: | string |
Défaut: | "$user", public |
Contexte: | user |
Redémarrer: | false |
Cette variable précise l'ordre dans lequel les schémas sont parcourus lorsqu'un objet (table, type de données, fonction, etc.) est référencé par un simple nom sans précision du schéma. Lorsque des objets de noms identiques existent dans plusieurs schémas, c'est le premier trouvé dans le chemin de recherche qui est utilisé. Il ne peut être fait référence à un objet qui ne fait partie d'aucun des schémas indiqués dans le chemin de recherche qu'en précisant son schéma conteneur avec un nom qualifié (avec un point).
search_path
doit contenir une liste de noms de schémas séparés par des virgules. Tout nom qui ne correspond pas à un schéma existant ou qui correspond à un schéma pour lequel l'utilisateur n'a pas le droit USAGE
, est ignoré silencieusement.
Si un des éléments de la liste est le nom spécial $user
, alors le schéma dont le nom correspond à la valeur retournée par CURRENT_USER est substitué, s'il existe et que l'utilisateur ait le droit USAGE
sur ce schéma (sinon $user
est ignoré).
Le schéma du catalogue système, pg_catalog
, est toujours parcouru, qu'il soit ou non mentionné dans le chemin. Mentionné, il est alors parcouru dans l'ordre indiqué. Dans le cas contraire, il est parcouru avant tout autre élément du chemin.
De même, le schéma des tables temporaires, pg_temp_nnn
, s'il existe, est toujours parcouru. Il peut être explicitement ajouté au chemin à l'aide de l'alias pg_temp
pg_temp. S'il n'en fait pas partie, la recherche commence par lui (avant même pg_catalog
). Néanmoins, seuls les noms de relation (table, vue, séquence, etc.) et de type de données sont recherchés dans le schéma temporaire. Aucune fonction et aucun opérateur n'y est jamais recherché.
Lorsque des objets sont créés sans précision de schéma cible particulier, ils sont placés dans le premier schéma valide listé dans le chemin de recherche. Une erreur est rapportée si le chemin de recherche est vide.
La valeur par défaut de ce paramètre est "$user", public
. Elle permet l'utilisation partagée d'une base de données (dans laquelle aucun utilisateur n'a de schéma privé et tous partagent l'utilisation de public
), les schémas privés d'utilisateur ainsi qu'une combinaison de ces deux modes. D'autres effets peuvent être obtenus en modifiant le chemin de recherche par défaut, globalement ou par utilisateur.
La valeur courante réelle du chemin de recherche peut être examinée via la fonction SQLcurrent_schemas() (voir functions-info). Elle n'est pas identique à la valeur de search_path
car current_schemas affiche la façon dont les requêtes apparaissant dans search_path
sont résolues.