SET VÄG

Gäller för:kryssa i ja Databricks SQL-kryss markerad ja Databricks Runtime 19 och uppåt

Sökvägen är den ordnade listan av scheman som Azure Databricks söker i när en fråga eller DML-sats refererar till en tabell, vy eller funktion utan katalog- och schema-kvalificering. Det okvalificerade ämnet i en DDL-sats är current_catalog.current_schema, inte en väguppslagning, så CREATE TABLE t skapar t i det aktuella schemat. För hur vägen gäller för frågor i DDL-satser och för persistenta vyer, se Tabell och vyupplösning. För rutinmässiga kroppar, se Funktion och procedurupplösning.

Syntax

SET PATH = path_element [, ...]

path_element
  { DEFAULT_PATH |
    SYSTEM_PATH |
    CURRENT_SCHEMA |
    PATH |
    schema_name }

Parameters

  • DEFAULT_PATH

    Ett nyckelord som expanderar till PATH-konfigurationsparametern, vilket är arbetsytans standard som nya sessioner ärver. Om parametern inte har överskrivits är expansionen system.session, system.builtin, system.ai, CURRENT_SCHEMA.

  • SYSTEM_PATH

    Ett nyckelord som utvidgas till de systemtillhandahållna scheman: system.builtin, system.ai.

  • CURRENT_SCHEMA

    En virtuell schemareferens som vid användning löses till den aktuella katalogen och nuvarande schemat (current_catalog().current_schema()). Expansionen följer förändringar som görs under USE CATALOGUSE SCHEMA och under sessionen.

  • VÄG

    Ett nyckelord som expanderar till den aktuella sessionsvägen. Använd den för att förlänga stigen utan att behöva upprepa innehållet.

  • schema_name

    Ett tvådelat namn (catalog.schema) krävs. Namn med mer än två delar är tillåtna. Ett namn med en enda del väcker INVALID_SQL_PATH_SCHEMA_REFERENCE.

    Katalogen och schemat behöver inte finnas vid tidpunkten för körningen SET PATH. Namnupplösning hoppar över saknade poster och fortsätter med nästa väg-element.

Description

Följande regler styr vilka vägelement SET PATH som accepteras och hur den resulterande vägen påverkar namnupplösning.

  • Dubbletter: Dubbletter av vägelement är inte tillåtna. Efter nyckelordsexpansion ökar dubbletter DUPLICATE_SQL_PATH_ENTRY.
  • Systemscheman: system.builtin och system.ai innehåller inbyggda skalär-, tabell- och AI-funktioner. system.session innehåller sessionsbegränsade objekt såsom temporära variabler, temporära funktioner och temporära vyer. Det rekommenderas generellt inte att lämna system.builtin stigen.
  • Utelämnade scheman: Okvalificerade namn löses endast mot scheman på vägen. Om du utelämnar CURRENT_SCHEMA, kvalificerar persistenta objekt i det aktuella schemat. Om du utelämnar system.builtin eller system.ai, kvalificerar dessa funktioner, till exempel system.builtin.abs. Om du utelämnar system.session, hittas inte okvalificerade tillfälliga vyer, temporära funktioner och sessionsvariabler.
  • Vyer och rutiner: Persistenta vyer, SQL-användardefinierade funktioner och SQL SECURITY DEFINER procedurer fångar vägen vid CREATE och löser okvalificerade namn i sina kroppar mot den fångade vägen, inte mot anroparens sessionsväg. En SQL SECURITY DEFINER procedur utelämnas system.session från den erövrade vägen. En SQL SECURITY INVOKER procedur använder uppringarens live-väg. Se Fångad väg.
  • Att inspektera vägen: SET PATH; skriver inte ut banan. Använd current_path.

Examples

Kör följande satser i ordning, eftersom senare satser bygger på den väg som tidigare satser satt.

-- Restore the workspace default.
> SET PATH = DEFAULT_PATH;
> SELECT current_path();
  system.session,system.builtin,system.ai,main.default

-- Restrict the PATH to only the system-provided schemas.
> SET PATH = SYSTEM_PATH;
> SELECT current_path();
  system.builtin,system.ai

-- Append a schema to the existing PATH without restating it.
> SET PATH = PATH, libraries.pgsql;
> SELECT current_path();
  system.builtin,system.ai,libraries.pgsql

-- Put the current schema ahead of the system schemas so that user-defined
-- functions shadow built-in functions of the same name.
> SET PATH = CURRENT_SCHEMA, PATH;
> SELECT current_path();
  main.default,system.builtin,system.ai,libraries.pgsql

Följande satser misslyckas och ändrar inte vägen.

-- A single-part schema name is rejected.
> SET PATH = my_schema;
  [INVALID_SQL_PATH_SCHEMA_REFERENCE]

-- A duplicate path element raises an error after expansion.
> SET PATH = SYSTEM_PATH, system.builtin;
  [DUPLICATE_SQL_PATH_ENTRY]