Dela via


ADD CONSTRAINT-sats

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

Lägger till en informerande primärnyckel, informerande främmande nyckel eller en framtvingad kontrollbegränsning i en befintlig Delta Lake-tabell.

Syntax

ADD [check_constraint | key_constraint ]

check_constraint
    CONSTRAINT name CHECK ( condition ) [ ENFORCED ]

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

constraint_option
    { NOT ENFORCED |
      DEFERRABLE |
      INITIALLY DEFERRED |
      { NORELY | RELY } }

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.

Parametrar

  • check_constraint

    Definierar en kontrollbegränsning för en Delta Lake-tabell.

    • CONSTRAINT Namn

      Ange ett namn för begränsningen. Namnet måste vara unikt i tabellen. Om inget namn anges för en FOREIGN KEY eller PRIMARY KEY villkor genererar Azure Databricks en.

    • CHECK ( tillstånd)

      condition måste vara ett deterministiskt uttryck som returnerar ett BOOLEAN.

      condition kan bestå av literaler, kolumnidentifierare i tabellen och deterministiska, inbyggda SQL-funktioner eller operatorer förutom:

      Får inte heller condition innehålla någon underfråga.

      För att en CHECK begränsning ska uppfyllas i Azure Databricks måste den utvärderas till true.

      Delta Lake verifierar giltigheten för kontrollbegränsningen mot både nya och befintliga data. Om en befintlig rad bryter mot villkoret genereras ett fel.

  • key_constraint

    Viktigt!

    Den här funktionen finns som allmänt tillgänglig förhandsversion.

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

    Definierar en informativ primärnyckel eller informativ utländsk nyckelbegränsning för en Delta Lake-tabell.

    • 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:markerad med ja Unity Catalog endast

      Lägger till en primär nyckelbegränsning i Delta Lake-tabellen. En tabell kan ha högst en primärnyckel.

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

    • key_column

      En kolumn i ämnestabellen som definieras som NOT NULL. 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 också etikettera primärnyckelkolumnkomponenten som representerar en tidsserie.

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

      gäller endast för:markerad ja Unity-katalog

      Lägger till en begränsning för extern nyckel (referensintegritet) till en Delta Lake-tabell.

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

      • foreign_key_column

        En kolumn i ämnestabellen. 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 som den främmande nyckeln 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 som är en del av dess primära nyckel. Alla primärnyckelkolumner i den överordnade tabellen måste visas.

        Om överordnade kolumner inte visas är de underförstådda att anges i den ordning som anges i PRIMARY KEY definition.

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

    • constraint_option

      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:markerad med ja Databricks SQL markerad med ja Databricks Runtime 15.4 och senare versioner för FOREIGN KEY begränsningar

        Om RELYkan Azure Databricks utnyttja begränsningen för att skriva om 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.

        Standardvärdet är NORELY.

    • foreign_key_option

      Visar en lista över egenskaper som är specifika för begränsningar för sekundärnyckel. 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 den överordnade PRIMARY KEY uppdateras vidtar Azure Databricks ingen åtgärd för att begränsa uppdateringen eller uppdatera referensnyckeln.

      • 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

-- Add a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING);
> ALTER TABLE persons ADD CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name);

-- Add a foreign key which Databricks does not enforce, but can rely upon.
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING);
> ALTER TABLE pets ADD CONSTRAINT pets_persons_fk
    FOREIGN KEY(owner_first_name, owner_last_name) REFERENCES persons
    NOT ENFORCED RELY;

-- Add a check contraint
> ALTER TABLE pets ADD CONSTRAINT pets_name_not_cute_chk CHECK (length(name) < 20);