Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:
Databricks SQL
Databricks Runtime
Voegt een
Syntaxis
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 }
Voor compatibiliteit met niet-standaard SQL-dialecten kunt u opgeven ENABLE NOVALIDATE in plaats van NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Parameterwaarden
check_constraintHiermee definieert u een controlebeperking voor een relatie.
CONSTRAINTnaamHiermee geeft u een naam voor de beperking. De naam moet uniek zijn binnen de relatie.
CHECK (voorwaarde)De
DEFAULT COLLATIONrelatie moet zijnUTF8_BINARYop het moment dat de beperking wordt toegevoegd.conditionmoet een deterministische expressie zijn die eenBOOLEAN.conditionkan bestaan uit letterlijke waarden, kolom-id's binnen de relatie en deterministische, ingebouwde SQL-functies of -operators, met uitzondering van:- Statistische functies
- Analytische vensterfuncties
- Rangschikking vensterfuncties
- Generatorfuncties met tabelgewaardeerde waarden
-
STRINGkolommen met andere sorteringen danUTF8_BINARY
Mag ook
conditiongeen subquery bevatten.Om aan een
CHECKbeperking te voldoen in Azure Databricks, moet deze gelijk zijn aantrue.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 gemeld.
key_constraintBelangrijk
Deze functie is beschikbaar als openbare preview.
Van toepassing op:
Databricks SQL
Databricks Runtime 11.3 LTS en hogerDefinieert een informatieve primaire sleutel of informatieve vreemde sleutelbeperking voor een relatie. Beperkingen voor informatieve sleutels worden niet afgedwongen, maar kunnen de prestaties verbeteren door ondersteuning te bieden voor queryoptimalisaties.
CONSTRAINTnaamHiermee 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 CatalogHiermee voegt u een primaire-sleutelbeperking toe aan de relatie. Een relatie kan maximaal één primaire sleutel hebben.
Primaire-sleutelbeperkingen worden niet ondersteund voor relaties in de
hive_metastorecatalogus.-
Een kolom met de onderwerprelatie die is gedefinieerd als
NOT NULL. Kolomnamen mogen niet worden herhaald. TIMESERIESVan toepassing op:
Databricks SQL
Databricks Runtime 13.3 LTS en hogerDesgewenst kunt u de kolom van de primaire sleutel labelen als een tijdreeks.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optionVan toepassing op:
alleen Unity CatalogHiermee voegt u een referentiële sleutelbeperking (referentiële integriteit) toe aan de relatie.
Beperkingen voor foreign keys worden niet ondersteund voor relaties in de
hive_metastorecatalog.-
Een kolom van de onderwerprelatie. Kolomnamen mogen niet worden herhaald. Het gegevenstype van elke kolom moet overeenkomen met het type overeenkomende
parent_column. Het aantal kolommen moet overeenkomen met het aantalparent_columns. Twee vreemde sleutels kunnen geen identieke set vreemde-sleutelkolommen delen. -
Hiermee geeft u de relatie op waarnaar de vreemde sleutel verwijst. De relatie moet een gedefinieerde
PRIMARY KEYbeperking hebben en u moet deSELECTbevoegdheid voor de relatie hebben. -
Een kolom in de ouderrelatie die deel uitmaakt van de primaire sleutel. Alle primaire sleutelkolommen van de bovenliggende relatie moeten worden genoemd.
Als bovenliggende kolommen niet worden vermeld, worden ze verondersteld in de volgorde te staan zoals gespecificeerd in de
PRIMARY KEY-definitie.
Beperkingen voor vreemde sleutels die alleen verschillen in de volgorde van de vreemde sleutelkolommen zijn niet toegestaan.
-
constraint_optionHiermee worden de eigenschappen van de beperkingen weergegeven. Alle eigenschappen zijn optioneel, maar worden standaard geïmpliceerd. Elke eigenschap kan maximaal eenmaal worden opgegeven.
NOT ENFORCEDAzure Databricks voert geen actie uit om deze af te dwingen voor bestaande of nieuwe rijen.
DEFERRABLEDe afdwinging van beperkingen kan worden uitgesteld.
INITIALLY DEFERREDAfdwingen van beperkingen wordt uitgesteld.
NORELYofRELYVan toepassing op:
Databricks SQL
Databricks Runtime 14.2 en hoger voor beperkingen PRIMARY KEYVan toepassing op:
Databricks SQL
Databricks Runtime 15.4 en hoger voor FOREIGN KEYbeperkingenAls
RELY, kan Azure Databricks gebruikmaken van de beperking 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_optionGeeft een lijst van de eigenschappen die specifiek zijn voor foreign key-beperkingen. Alle eigenschappen zijn optioneel, maar worden standaard geïmpliceerd. Elke eigenschap kan maximaal eenmaal worden opgegeven.
MATCH FULLAls de beperking als waar moet worden beschouwd, moeten alle kolomwaarden worden
NOT NULL.ON UPDATE NO ACTIONAls de bovenliggende
PRIMARY KEYwordt bijgewerkt, onderneemt Azure Databricks geen actie om de bijwerking te beperken of de vreemde sleutel bij te werken.ON DELETE NO ACTIONAls de bovenliggende rij wordt verwijderd, onderneemt Azure Databricks geen actie om de actie te beperken, de refererende sleutel bij te werken of de afhankelijke rij te verwijderen.
Belangrijk
Azure Databricks dwingt geen beperkingen af voor primaire sleutels of vreemde sleutels. Bevestig sleutelbeperkingen voordat u een primaire of vreemde 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);