CONSTRAINT-sats
Gäller för: Databricks SQL Databricks Runtime
Lägger till en primär informationsnyckel eller en sekundärnyckel för information 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_constraint
Anvä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
.
Parameters
CONSTRAINT
NamnDu 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 endast för: Databricks SQL Databricks Runtime 11.3 LTS och senare i Unity Catalog
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.-
En kolumn i ämnestabellen eller materialiserad vy. Kolumnnamn får inte upprepas.
TIMESERIES
Gäller för: Databricks SQL Databricks Runtime 13.3 LTS och senare
Du kan också etikettera primärnyckelkolumnkomponenten som representerar 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
motsvarartable_constraint
PRIMARY KEY (key_column) [ constraint_option ] [...]
FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Gäller endast för: Databricks SQL Databricks Runtime 11.3 LTS och senare i Unity Catalog
Lägger till en begränsning för sekundärnyckel (referensintegritet) i tabellen eller den materialiserade vyn.
Begränsningar för sekundärnyckel 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.
-
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 antaletparent_column
s. Två sekundärnycklar kan inte dela en identisk uppsättning sekundärnyckelkolumner. -
Anger tabellen eller den materialiserade vy som sekundärnyckeln refererar till. Tabellen måste ha en definierad
PRIMARY KEY
begränsning och du måste ha behörighetenSELECT
för tabellen. -
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
motsvarartable_constraint
FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
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änsningsframtvingandet skjuts upp.
NORELY
ellerRELY
Gäller för: Databricks SQL Databricks Runtime 14.2 och senare för begränsningar
PRIMARY KEY
Gäller för: Databricks Runtime 15.4 och senare för begränsningar
FOREIGN KEY
Om
RELY
kan 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
enheten uppdateras vidtar Azure Databricks ingen åtgärd för att begränsa uppdateringen eller uppdatera sekundärnyckeln.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);