Amazon Redshift
Manuel du développeur de base de données

search_path

Valeurs (par défaut en gras)

'$user', public, schema_names

Liste séparée par des virgules de noms de schéma existants. Si '$user' est présent, le schéma ayant le même nom que SESSION_USER est remplacé, sinon il est ignoré. Si public est présent et qu'il n'existe aucun schéma avec le nom public, il est ignoré.

Description

Ce paramètre spécifie l'ordre dans lequel les schémas sont explorés lorsqu'un objet (une table ou une fonction, par exemple) est référencé par un nom simple sans composant de schéma.

  • Les chemins de recherche ne sont pas pris en charge dans les schémas et tables externes. Les tables externes doivent être explicitement qualifiées à l'aide d'un schéma externe.

  • Lorsque les objets sont créés sans schéma cible spécifique, ils sont placés dans le premier schéma répertorié dans le chemin de recherche. Si le chemin de recherche est vide, le système renvoie une erreur.

  • Lorsque des objets avec des noms identiques existent dans des schémas différents, le premier trouvé dans le chemin de recherche est utilisé.

  • Un objet qui n'est pas dans l'un des schémas du chemin de recherche peut uniquement être référencé en spécifiant son schéma contenant avec un nom complet (en pointillé).

  • Le schéma du catalogue système, pg_catalog, est toujours exploré. S'il est mentionné dans le chemin d'accès, il est exploré dans l'ordre spécifié. Dans le cas contraire, il est exploré avant l'un des éléments du chemin d'accès.

  • Le schéma des tables temporaires de la session en cours, pg_temp_nnn, est toujours exploré s'il existe. Il peut être explicitement répertorié dans le chemin d'accès à l'aide de l'alias pg_temp. S'il n'apparaît pas dans le chemin d'accès, il est exploré en premier (avant même pg_catalog). Cependant, le schéma temporaire n'est exploré que pour les noms de relation (tables, vues). Il n'est pas exploré pour les noms de fonction.

Exemple

L'exemple suivant crée le schéma ENTERPRISE et définit le search_path vers le nouveau schéma.

create schema enterprise; set search_path to enterprise; show search_path; search_path ------------- enterprise (1 row)

L'exemple suivant ajoute le schéma ENTERPRISE au search_path par défaut.

set search_path to '$user', public, enterprise; show search_path; search_path ----------------------------- "$user", public, enterprise (1 row)

L'exemple suivant ajoute la table FRONTIER au schéma ENTERPRISE :

create table enterprise.frontier (c1 int);

Lorsque la table PUBLIC. FRONTIER est créée dans la même base de données et que l'utilisateur ne spécifie pas le nom du schéma dans une requête, PUBLIC. FRONTIER a priorité sur ENTERPRISE.FRONTIER :

create table public.frontier(c1 int); insert into enterprise.frontier values(1); select * from frontier; frontier ---- (0 rows) select * from enterprise.frontier; c1 ---- 1 (1 row)