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, informativ främmande nyckel eller ett tvingande kontrollvillkor i en befintlig Delta Lake-tabell.
Syntax
ADD [check_constraint | key_constraint ]
check_constraint
CONSTRAINT name CHECK ( condition )
key_constraint
{ [ CONSTRAINT name ]
{
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY (foreign_key_column [, ...] )
REFERENCES parent_relation [ ( 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_constraintDefinierar en kontrollbegränsning för en relation.
CONSTRAINTNamnAnge ett namn för begränsningen. Namnet måste vara unikt i relationen.
CHECK (tillstånd)Relationen
DEFAULT COLLATIONmåste varaUTF8_BINARYnär villkoret läggs till.conditionmåste vara ett deterministiskt uttryck som returnerar ettBOOLEAN.conditionkan bestå av literaler, kolumnidentifierare i relationen och deterministiska, inbyggda SQL-funktioner eller operatorer förutom:- Mängdfunktioner
- analytiska fönsterfunktioner
- Funktioner för rangordningsfönster
- Generatorfunktioner för tabellvärde
-
STRINGkolumner med andra sorteringar änUTF8_BINARY
Får inte heller
conditioninnehålla någon underfråga.För att en
CHECKbegränsning ska uppfyllas i Azure Databricks måste den utvärderas tilltrue.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_constraintViktigt!
Den här funktionen finns som allmänt tillgänglig förhandsversion.
Gäller för:
Databricks SQL
Databricks Runtime 11.3 LTS och senareDefinierar en informativ primärnyckel eller informativ främmande nyckelbegränsning för en relation. Informationsnyckelbegränsningar tillämpas inte men kan förbättra prestanda genom att stödja frågeoptimeringar.
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:
Unity Catalog endastLägger till en primär nyckelbegränsning i relationen. En relation kan ha högst en primärnyckel.
Primära nyckelbegränsningar stöds inte för relationer i
hive_metastorekatalogen.-
En kolumn i ämnesrelationen som definieras som
NOT NULL. Kolumnnamn får inte upprepas. TIMESERIESGäller för:
Databricks SQL
Databricks Runtime 13.3 LTS och senareDu kan också märka kolumnkomponenten för primärnyckeln som representerande en tidsserie.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optiongäller för:
Unity Catalog endastLägger till en främmande nyckel (referensintegritetsbegränsning) till relationen.
Begränsningar för främmande nyckel stöds inte i
hive_metastorekatalogen för relationer.-
En kolumn i ämnesrelationen. 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 den relation som främmande nyckeln refererar till. Relationen måste ha en definierad
PRIMARY KEYbegränsning och du måste ha behörighet förSELECTrelationen. -
En kolumn i den överordnade relationen som är en del av dess primära nyckel. Alla primärnyckelkolumner i föräldrarrelationen måste vara listade.
Om överordnade kolumner inte visas är de underförstådda att anges i den ordning som anges i
PRIMARY KEYdefinition.
Begränsningar för sekundärnyckel som endast skiljer sig åt i permutationen för sekundärnyckelkolumnerna tillåts inte.
-
constraint_optionVisar 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 versioner för FOREIGN KEYbegränsningarOm
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_optionVisar egenskaperna som är specifika för främmande nyckelbegrä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 den överordnade
PRIMARY KEYuppdateras vidtar Azure Databricks ingen åtgärd för att begränsa uppdateringen eller uppdatera referensnyckeln.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
-- 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);