COMPONENT ADD CONSTRAINT
Van toepassing op: Databricks SQL Databricks Runtime
Voegt een informatieve primaire sleutel, informatieve refererende sleutel of een afgedwongen controlebeperking toe aan een bestaande Delta Lake-tabel.
Syntaxis
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 }
Voor compatibiliteit met niet-standaard SQL-dialecten kunt u opgeven ENABLE NOVALIDATE
in plaats van NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
.
Parameters
check_constraint
Hiermee definieert u een controlebeperking voor een Delta Lake-tabel.
CONSTRAINT
nameHiermee geeft u een naam voor de beperking. De naam moet uniek zijn in de tabel. Als er geen naam is opgegeven voor een
FOREIGN KEY
ofPRIMARY KEY
beperking, genereert Azure Databricks er een.CHECK (
voorwaarde)
condition
moet een deterministische expressie zijn die eenBOOLEAN
.condition
kan bestaan uit letterlijke waarden, kolom-id's in de tabel en deterministische, ingebouwde SQL-functies of -operators, met uitzondering van:- Statistische functies
- Analytische vensterfuncties
- Classificatievensterfuncties
- Generatorfuncties met tabelwaarde
Mag ook
condition
geen subquery bevatten.Om aan een
CHECK
beperking in Azure Databricks te kunnen voldoen, moet deze wordentrue
geëvalueerd.Delta Lake controleert de geldigheid van de controlebeperking op zowel nieuwe als bestaande gegevens. Als een bestaande rij de beperking schendt, wordt er een fout gegenereerd.
key_constraint
Belangrijk
Deze functie is beschikbaar als openbare preview.
Van toepassing op: Databricks SQL Databricks Runtime 11.3 LTS en hoger
Definieert een informatieve primaire sleutel of informatieve refererende sleutelbeperking voor een Delta Lake-tabel.
CONSTRAINT
nameHiermee geeft u desgewenst een naam op voor de beperking. De naam moet uniek zijn binnen het schema. Als er geen naam is opgegeven, genereert Azure Databricks er een.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]
Van toepassing op: alleen Unity Catalog
Hiermee voegt u een primaire-sleutelbeperking toe aan de Delta Lake-tabel. Een tabel kan maximaal één primaire sleutel hebben.
Primaire-sleutelbeperkingen worden niet ondersteund voor tabellen in de
hive_metastore
catalogus.-
Een kolom van de onderwerptabel die is gedefinieerd als
NOT NULL
. Kolomnamen mogen niet worden herhaald. TIMESERIES
Van toepassing op: Databricks SQL Databricks Runtime 13.3 LTS en hoger
U kunt desgewenst het primaire-sleutelkolomonderdeel labelen als een tijdreeks.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Van toepassing op: alleen Unity Catalog
Hiermee voegt u een referentiële sleutelbeperking (referentiële integriteit) toe aan de Delta Lake-tabel.
Beperkingen voor refererende sleutels worden niet ondersteund voor tabellen in de
hive_metastore
catalogus.-
Een kolom van de onderwerptabel. Kolomnamen mogen niet worden herhaald. Het gegevenstype van elke kolom moet overeenkomen met het type van de overeenkomende
parent_column
kolom. Het aantal kolommen moet overeenkomen met het aantalparent_columns
. Twee refererende sleutels kunnen geen identieke set refererende-sleutelkolommen delen. -
Hiermee geeft u de tabel waarnaar de refererende sleutel verwijst. De tabel moet een gedefinieerde
PRIMARY KEY
beperking hebben en u moet deSELECT
bevoegdheid voor de tabel hebben. -
Een kolom in de bovenliggende tabel die deel uitmaakt van de primaire sleutel. Alle primaire-sleutelkolommen van de bovenliggende tabel moeten worden weergegeven.
Als bovenliggende kolommen niet worden vermeld, worden ze geïmpliceerd om te worden opgegeven in de volgorde die in de
PRIMARY KEY
definitie is opgegeven.
Beperkingen voor refererende sleutels die alleen verschillen in de permutatie van de kolommen met refererende sleutels zijn niet toegestaan.
-
constraint_option
Hiermee worden de eigenschappen van de beperkingen weergegeven. Alle eigenschappen zijn optioneel, maar worden standaard geïmpliceerd. Elke eigenschap kan maximaal eenmaal worden opgegeven.
NOT ENFORCED
Azure Databricks voert geen actie uit om deze af te dwingen voor bestaande of nieuwe rijen.
DEFERRABLE
De afdwinging van beperkingen kan worden uitgesteld.
INITIALLY DEFERRED
Afdwingen van beperkingen wordt uitgesteld.
NORELY
ofRELY
Van toepassing op: Databricks SQL Databricks Runtime 14.2 en hoger voor beperkingen
PRIMARY KEY
Van toepassing op: Databricks SQL Databricks Runtime 15.4 en hoger voor
FOREIGN KEY
beperkingenAls
RELY
Azure Databricks de beperking kan gebruiken om query's te herschrijven. Het is de verantwoordelijkheid van de gebruiker om ervoor te zorgen dat aan de beperking wordt voldaan. Als u afhankelijk bent van een beperking die niet is voldaan, kan dit leiden tot onjuiste queryresultaten.De standaardwaarde is
NORELY
.
foreign_key_option
Geeft een lijst van de eigenschappen die specifiek zijn voor beperkingen voor refererende sleutels. Alle eigenschappen zijn optioneel, maar worden standaard geïmpliceerd. Elke eigenschap kan maximaal eenmaal worden opgegeven.
MATCH FULL
Als de beperking als waar moet worden beschouwd, moeten alle kolomwaarden zijn
NOT NULL
.ON UPDATE NO ACTION
Als het bovenliggende
PRIMARY KEY
item wordt bijgewerkt, neemt Azure Databricks geen actie om de update te beperken of de refererende sleutel bij te werken.ON DELETE NO ACTION
Als de bovenliggende rij wordt verwijderd, hoeft Azure Databricks geen actie te ondernemen om de actie te beperken, de refererende sleutel bij te werken of de afhankelijke rij te verwijderen.
Belangrijk
Azure Databricks dwingt geen beperkingen voor primaire of refererende sleutels af. Bevestig sleutelbeperkingen voordat u een primaire of refererende sleutel toevoegt. Uw opnameproces kan dergelijke zekerheid bieden of u kunt controles uitvoeren op basis van uw gegevens.
Voorbeelden
-- 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);