search_path - Amazon Redshift

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 percorso 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 viene creata la tabella PUBLIC.FRONTIER nello stesso database e l'utente non specifica il nome dello schema in una query, PUBLIC.FRONTIER ha 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)