CONSTRAINT-sats

Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime

Lägger till en primär informationsnyckel, en informationsnyckel eller en informations unik begränsning som en del av en eller CREATE MATERIALIZED VIEW -CREATE TABLEinstruktion.

Om du vill lägga till en kontrollbegränsning i en Delta Lake-tabell använder du ALTER TABLE när tabellen har skapats.

Syntax

table_constraint Använd -satsen för att definiera begränsningar som sträcker sig över flera kolumner eller för att skilja syntaxen från kolumndefinitionen.

table_constraint
   { [ CONSTRAINT name ]
     { PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
       UNIQUE ( key_column [, ...] ) [ constraint_option [...] ] |
       { FOREIGN KEY ( foreign_key_column [, ...] )
         REFERENCES parent_table [ ( parent_column [, ...] ) ]
         [ foreign_key_option | constraint_option ] [...]
       }
     }
   }

column_constraintAnvänd -satsen för att definiera begränsningar som är specifika för en enskild kolumndefinition.

column_constraint
  { [ CONSTRAINT name ]
    { PRIMARY KEY [ constraint_option ] [...] |
      UNIQUE [ constraint_option ] [...] |
      { [ FOREIGN KEY ]
        REFERENCES parent_table [ ( parent_column [, ...] ) ]
        [ foreign_key_option | constraint_option ] [...]
      }
    }
  }
constraint_option
    { NOT ENFORCED |
      DEFERRABLE |
      INITIALLY DEFERRED |
      { RELY | NORELY } }

foreign_key_option
    { MATCH FULL |
      ON UPDATE NO ACTION |
      ON DELETE NO ACTION }

För kompatibilitet med sql-dialekter som inte är standard kan du ange ENABLE NOVALIDATE i stället för NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Parameterar

  • CONSTRAINT Namn

    Du kan också ange ett namn för villkoret. Namnet måste vara unikt i schemat. Om inget namn anges genererar Azure Databricks ett.

  • PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]

    gäller för:kryssmarkerad ja Databricks SQL kryssmarkerad ja Databricks Runtime 11.3 LTS och senare kryssmarkerad ja Unity Catalog endast

    Lägger till en informationsnyckelbegränsning i tabellen eller den materialiserade vyn. En tabell eller materialiserad vy kan ha högst en primärnyckel.

    Primärnyckelkolumner definieras implicit som NOT NULL.

    Primära nyckelbegränsningar stöds inte för tabeller i hive_metastore-katalogen.

    • key_column

      En kolumn i ämnestabellen eller materialiserad vy. Kolumnnamn får inte upprepas.

    • TIMESERIES

      Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 13.3 LTS och senare

      Du kan markera primärnyckelkolumnkomponenten som representerande en tidsserie.

  • PRIMARY KEY [ constraint_option ] [...]

    Lägger till en primärnyckelbegränsning för en enskild kolumn i tabellen eller den materialiserade vyn med hjälp av definitionen för föregående nyckelkolumn.

    Detta column_constraint motsvarar table_constraint

    PRIMARY KEY (key_column) [ constraint_option ] [...]

  • UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]

    Gäller för:check markerad ja Databricks SQL-kontroll markerad ja Databricks Runtime 18.2 och senare markerad ja Endast Unity Catalog

    Lägger till en informations unik begränsning i tabellen. En tabell kan ha flera unika begränsningar.

    Unika begränsningar stöds inte för tabeller i hive_metastore katalogen.

    Kolumner i en UNIQUE begränsning kan vara nullbara, inklusive när villkoret refereras till av en sekundärnyckel. NULL värden i UNIQUE kolumner behandlas som åtskilda från varandra, så dubblettvärden NULL bryter inte mot semantiken för en UNIQUE begränsning.

    • key_column

      En kolumn i ämnestabellen. Kolumnnamn får inte upprepas.

  • UNIQUE [ constraint_option ] [...]

    Lägger till en unik begränsning för en enskild kolumn i tabellen med hjälp av definitionen för föregående nyckelkolumn.

    Detta column_constraint motsvarar table_constraint

    UNIQUE (key_column) [ constraint_option ] [...]

  • FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option

    gäller för:kryssmarkerad ja Databricks SQL kryssmarkerad ja Databricks Runtime 11.3 LTS och senare kryssmarkerad ja Unity Catalog endast

    Lägger till en informativ främmande nyckel (referensintegritet) begränsning i tabellen eller den materialiserade vyn.

    Begränsningar för främmande nyckel stöds inte för tabeller i hive_metastore-katalogen.

    Begränsningar för sekundärnyckel som endast skiljer sig åt i permutationen för sekundärnyckelkolumnerna tillåts inte.

    • utländsk_nyckel_kolumn

      En kolumn i ämnestabellen eller materialiserad vy. Kolumnnamn får inte upprepas. Datatypen för varje kolumn måste matcha typen av matchande parent_column. Antalet kolumner måste matcha antalet parent_columns. Två främmande nycklar kan inte dela en identisk uppsättning främmande nyckelkolumner.

    • parent_table

      Anger tabellen eller den materialiserade vy som referensnyckeln refererar till. Tabellen måste ha en definierad PRIMARY KEY begränsning eller, i Databricks Runtime 18.2 och senare, en definierad UNIQUE begränsning, och du måste ha behörigheten SELECT i tabellen.

    • parent_column

      En kolumn i den överordnade tabellen eller den materialiserade vyn som är en del av dess primära nyckel eller, i Databricks Runtime 18.2 och senare, en del av en unik begränsning. Alla primärnyckelkolumner eller unika villkorskolumner i den överordnade tabellen eller den materialiserade vyn måste visas.

      Om överordnade kolumner inte visas anges de i den ordning som anges i PRIMARY KEY definitionen.

    • FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

      Lägger till en begränsning för sekundärnyckel för en enskild kolumn i tabellen eller den materialiserade vyn med hjälp av den föregående definitionen för sekundärnyckelkolumnen.

      Detta column_constraint motsvarar table_constraint

      FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

  • begränsningsalternativ

    Visar en lista över egenskaperna för begränsningarna. Alla egenskaper är valfria men underförstådda som standard. Varje egenskap kan högst anges en gång.

    • NOT ENFORCED

      Azure Databricks vidtar inga åtgärder för att framtvinga det för befintliga eller nya rader.

    • DEFERRABLE

      Begränsningsframtvingandet kan skjutas upp.

    • INITIALLY DEFERRED

      Begränsningstillämpningen skjuts upp.

    • NORELY eller RELY

      Gäller för:markerad ja Databricks SQL markerad ja Databricks Runtime 14.2 och senare för begränsningar PRIMARY KEY

      gäller för:kontrollera markerat ja Databricks SQL kontrollera markerat ja Databricks Runtime 15.4 och senare för FOREIGN KEY begränsningar

      Gäller för:check markerad ja Databricks SQL-kontroll markerad ja Databricks Runtime 18.2 och senare för UNIQUE begränsningar

      Om RELYkan Azure Databricks utnyttja begränsningen för att skriva om och optimera frågor. Det är användarens ansvar att se till att begränsningen uppfylls. Om du förlitar dig på en begränsning som inte är uppfylld kan det leda till felaktiga frågeresultat. Frågeoptimeringar som är associerade med RELY kommandot kräver att frågor körs på Photon-aktiverad beräkning. Se Vad är Photon?.

      Standardvärdet är NORELY.

  • alternativ för främmande nyckel

    Listar egenskaper specifika för främmande nyckel-begränsningar. Alla egenskaper är valfria men underförstådda som standard. Varje egenskap kan högst anges en gång.

    • MATCH FULL

      För att villkoret ska betraktas som sant måste alla kolumnvärden vara NOT NULL.

    • ON UPDATE NO ACTION

      Om PRIMARY KEY uppdateras, vidtar Azure Databricks ingen åtgärd för att förhindra uppdateringen eller uppdatera den främmande nyckeln.

    • ON DELETE NO ACTION

      Om den överordnade raden tas bort vidtar Azure Databricks ingen åtgärd för att begränsa åtgärden, uppdatera sekundärnyckeln eller ta bort den beroende raden.

Viktigt!

Azure Databricks framtvingar inte primärnyckel, sekundärnyckel eller unika begränsningar. Bekräfta nyckelbegränsningar innan du lägger till en primärnyckel, sekundärnyckel eller unik begränsning. Inmatningsprocessen kan ge sådan säkerhet, eller så kan du köra kontroller mot dina data.

Exempel

-- Create a table with a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING,
                       CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name));

-- create a table with a foreign key
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING,
                    CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, owner_last_name) REFERENCES persons);

-- Create a table with a single column primary key and system generated name
> CREATE TABLE customers(customerid STRING NOT NULL PRIMARY KEY, name STRING);

-- Create a table with a names single column primary key and a named single column foreign key
> CREATE TABLE orders(orderid BIGINT NOT NULL CONSTRAINT orders_pk PRIMARY KEY,
                      customerid STRING CONSTRAINT orders_customers_fk REFERENCES customers);

-- Create a table with a column unique constraint
> CREATE TABLE person_contacts(first_name STRING NOT NULL, last_name STRING NOT NULL,
                               nickname STRING UNIQUE);

-- Create a table with a multi-column unique constraint
> CREATE TABLE person_accounts(first_name STRING NOT NULL, last_name STRING NOT NULL, account_id STRING,
                               CONSTRAINT person_accounts_uq UNIQUE(first_name, last_name));

-- Create a table with a foreign key that references a unique column
> CREATE TABLE pet_tags(tag STRING NOT NULL, owner_nickname STRING,
                        CONSTRAINT pet_tags_owner_fk FOREIGN KEY (owner_nickname) REFERENCES person_contacts(nickname));