Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
search_path
Valori (valore predefinito in grassetto)
'$user', public, nomi_schemi
Elenco di nomi di schemi esistenti separati da virgola. Se è presente '$user', lo schema con lo stesso nome di SESSION_USER
viene sostituito, altrimenti viene ignorato.
Description
Specifica l'ordine con cui vengono eseguite le ricerche negli schemi quando si fa riferimento a un oggetto (ad esempio, una tabella o una funzione) usando un nome semplice senza componente dello schema.
-
I percorsi di ricerca non sono supportati con gli schemi esterni e le tabelle esterne. Le tabelle esterne devono essere qualificate in modo esplicito da uno schema esterno.
-
Quando vengono creati oggetti senza uno schema di destinazione specifico, gli oggetti vengono inseriti nel primo schema elencato nel percorso di ricerca. Se il percorso di ricerca è vuoto, il sistema restituisce un errore.
-
Quando sono presenti oggetti con nomi identici in schemi diversi, viene usato l'oggetto trovato per primo nel percorso di ricerca.
-
È possibile fare riferimento a un oggetto non incluso in alcuno schema nel percorso di ricerca solo specificando lo schema che lo contiene con un nome completo (puntato).
-
Nello schema del catalogo di sistema, pg_catalog, la ricerca al suo interno viene sempre eseguita. Se tale schema è menzionato nel percorso, la ricerca viene eseguita in base all'ordine specificato. In caso contrario, la ricerca viene eseguita prima che in qualsiasi altro elemento del percorso.
-
Se lo schema di tabella temporanea della sessione corrente, pg_temp_nnn, esiste, la ricerca al suo interno viene sempre eseguita. Può essere elencato in modo esplicito nel percorso usando l'alias pg_temp. Se lo schema non è elencato nel percorso, la ricerca al suo interno viene eseguita come prima cosa (anche prima della ricerca in pg_catalog). Tuttavia, nello schema temporaneo viene eseguita solo la ricerca dei nomi di relazioni (tabelle, viste). Non viene eseguita la ricerca dei nomi di funzioni.
Esempio
L'esempio seguente crea lo schema ENTERPRISE e imposta search_path sul nuovo schema.
create schema enterprise; set search_path to enterprise; show search_path; search_path ------------- enterprise (1 row)
L'esempio seguente aggiunge lo schema ENTERPRISE al search_path predefinito.
set search_path to '$user', public, enterprise; show search_path; search_path ----------------------------- "$user", public, enterprise (1 row)
L'esempio seguente aggiunge la tabella FRONTIER allo schema. ENTERPRISE
create table enterprise.frontier (c1 int);
Quando il tavoloPUBLIC. FRONTIERviene creato nello stesso database e l'utente non specifica il nome dello schema in una query,PUBLIC. FRONTIERha la precedenza su. 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)