CONSTRAINT-sats

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

Lägger till en informativ primärnyckel eller en informativ främmande nyckel som en del av en CREATE TABLE- eller CREATE MATERIALIZED VIEW-instruktion.

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 [...] ] |
       { 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 ] [...] |
      { [ 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 ] [...]

  • 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 och du måste ha SELECT-behörighet på tabellen.

    • parent_column

      En kolumn i den överordnade tabellen eller den materialiserade vyn som är en del av dess primära nyckel. Alla primärnyckelkolumner 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

      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 tillämpar inte begränsningar för primärnyckel eller sekundärnyckel. Bekräfta nyckelbegränsningar innan du lägger till en primär eller sekundärnyckel. 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);