Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:
Databricks SQL
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
CONSTRAINTNamnDu 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:
Databricks SQL
Databricks Runtime 11.3 LTS och senare
Unity Catalog endastLä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.
TIMESERIESGäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senareDu 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_constraintmotsvarartable_constraintPRIMARY KEY (key_column) [ constraint_option ] [...]FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_optiongäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senare
Unity Catalog endastLä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.
-
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_columns. Två främmande nycklar kan inte dela en identisk uppsättning främmande nyckelkolumner. -
Anger tabellen eller den materialiserade vy som referensnyckeln refererar till. Tabellen måste ha en definierad
PRIMARY KEY-begränsning och du måste haSELECT-behörighet på 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 KEYdefinitionen. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_optionLä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_constraintmotsvarartable_constraintFOREIGN 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 ENFORCEDAzure Databricks vidtar inga åtgärder för att framtvinga det för befintliga eller nya rader.
DEFERRABLEBegränsningsframtvingandet kan skjutas upp.
INITIALLY DEFERREDBegränsningstillämpningen skjuts upp.
NORELYellerRELYGäller för:
Databricks SQL
Databricks Runtime 14.2 och senare för begränsningar PRIMARY KEYgäller för:
Databricks SQL
Databricks Runtime 15.4 och senare för FOREIGN KEYbegränsningarOm
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 medRELYkommandot 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 FULLFör att villkoret ska betraktas som sant måste alla kolumnvärden vara
NOT NULL.ON UPDATE NO ACTIONOm
PRIMARY KEYuppdateras, vidtar Azure Databricks ingen åtgärd för att förhindra uppdateringen eller uppdatera den främmande nyckeln.ON DELETE NO ACTIONOm 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);