Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime
Információs elsődleges kulcsot, információs idegen kulcsot vagy kényszerített ellenőrzési kényszert ad hozzá egy meglévő Delta Lake-táblához.
Szintaxis
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 }
A nem szabványos SQL-dialektusokkal való kompatibilitás érdekében meghatározhatja a ENABLE NOVALIDATE helyett a NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.
Paraméterek
check_constraintEgy kapcsolat ellenőrzési korlátozását határozza meg.
CONSTRAINTnévMegadja a kényszer nevét. A névnek egyedinek kell lennie a kapcsolaton belül.
CHECK (feltétel)A
DEFAULT COLLATIONkapcsolatnak a kényszer hozzáadásakor kell lennieUTF8_BINARY.A(z)
condition-nak/nak egy determinisztikus kifejezésnek kell lennie, amely egyBOOLEANeredményez.conditionA reláción belüli literálokból, oszlopazonosítókból és determinisztikus, beépített SQL-függvényekből vagy operátorokból állhat, kivéve:- Függvények összesítése
- elemzési ablakfüggvények
- rangsorolási ablakfüggvények
- Táblaértékelő generátorfüggvények
- Az olyan oszlopok
STRING, amelyeknek a rendezése eltérUTF8_BINARY-től
Emellett
conditionnem tartalmazhat al-lekérdezést.Ahhoz, hogy egy
CHECKkorlátozás teljesüljön az Azure Databricksben, az értékénektrue-nek kell lennie.A Delta Lake ellenőrzi az ellenőrzési korlátozás érvényességét mind az új, mind a meglévő adatokon. Ha bármelyik meglévő sor megsérti a korlátozást, hiba lép fel.
key_constraintFontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 11.3 LTS és újabbEgy kapcsolat információs elsődleges kulcsát vagy információs idegenkulcs-korlátozását határozza meg. Az információs kulcsokra vonatkozó korlátozások nincsenek kényszerítve, de a lekérdezésoptimalizálás támogatásával javíthatja a teljesítményt.
CONSTRAINTnévOpcionálisan megadja a kényszer nevét. A névnek egyedinek kell lennie a sémában. Ha nincs megadva név, az Azure Databricks létrehoz egyet.
PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]A következőkre vonatkozik:
kizárólag a Unity CatalogElsődleges kulcskorlátozást ad hozzá a kapcsolathoz. Egy reláció legfeljebb egy elsődleges kulccsal rendelkezhet.
A katalógusban
hive_metastorelévő kapcsolatok esetében az elsődleges kulcskorlátozások nem támogatottak.-
A tárgyreláció oszlopa, amely a következőként
NOT NULLvan definiálva: . Az oszlopneveket nem szabad megismételni. TIMESERIESA következőkre vonatkozik:
Databricks SQL
Databricks Runtime 13.3 LTS és újabbOpcionálisan az elsődleges kulcs oszlopának komponensét idősorként címkézheti.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_optionA következőkre vonatkozik:
kizárólag a Unity CatalogIdegen kulcs (hivatkozási integritás) korlátozását adja hozzá a kapcsolathoz.
A katalógusban lévő kapcsolatok nem támogatják a
hive_metastorekülső kulcskorlátozásokat.-
A tárgy-reláció oszlopa. Az oszlopneveket nem szabad megismételni. Az egyes oszlopok adattípusának meg kell egyeznie az egyező
parent_columntípusával. Az oszlopok számának meg kell egyeznie aparent_columnsszámával. Két idegen kulcs nem oszthatja meg ugyanazt az idegen kulcs oszlopkészletet. -
Megadja azt a relációt, amelyre az idegen kulcs hivatkozik. A relációnak meghatározott
PRIMARY KEYkorlátozással kell rendelkeznie, és önnek rendelkeznie kell aSELECTrelációs jogosultsággal. -
A szülőreláció azon oszlopa, amely az elsődleges kulcs része. A szülőreláció összes elsődleges kulcsoszlopát fel kell sorolni.
Ha a szülőoszlopok nem szerepelnek a listában, azokat a
PRIMARY KEYdefinícióban megadott sorrendben kell megadni.
Olyan idegenkulcs-megkötések, amelyek csak az idegenkulcs-oszlopok sorrendjében különböznek, nem engedélyezettek.
-
constraint_optionA korlátozások tulajdonságait sorolja fel. Minden tulajdonság nem kötelező, de alapértelmezés szerint hallgatólagos. Az egyes tulajdonságok legfeljebb egyszer adhatók meg.
NOT ENFORCEDAz Azure Databricks nem hajt végre semmilyen műveletet a meglévő vagy új sorok érvényesítésére.
DEFERRABLEA kényszerérvényesítés elhalasztható.
INITIALLY DEFERREDA kényszerérvényesítés elhalasztva.
NORELYvagyRELYA következőkre vonatkozik:
Databricks SQL
Databricks Runtime 14.2 és újabb verziókra korlátozások esetén PRIMARY KEYA következőkre vonatkozik:
Databricks SQL
Databricks Runtime 15.4 és újabb verziókra FOREIGN KEYkorlátozások eseténHa
RELY, az Azure Databricks kihasználhatja a lekérdezések újraírására vonatkozó kényszert. A felhasználó felelőssége annak biztosítása, hogy a korlátozás teljesüljön. Ha nem teljesülő kényszerre támaszkodik, helytelen lekérdezési eredményekhez vezethet.Az alapértelmezett érték
NORELY.
foreign_key_optionAz idegenkulcs-korlátozásokra jellemző tulajdonságokat sorolja fel. Minden tulajdonság nem kötelező, de alapértelmezés szerint hallgatólagos. Az egyes tulajdonságok legfeljebb egyszer adhatók meg.
MATCH FULLAhhoz, hogy a kényszer igaznak minősüljön, minden oszlopértéknek
NOT NULLkell lennie.ON UPDATE NO ACTIONHa a szülőt
PRIMARY KEYfrissítik, az Azure Databricks nem hajt végre semmilyen műveletet a frissítés korlátozására vagy az idegen kulcs módosítására.ON DELETE NO ACTIONHa a szülősor törölve van, az Azure Databricks nem hajt végre semmilyen műveletet a művelet korlátozásához, az idegen kulcs frissítéséhez vagy a függő sor törléséhez.
Fontos
Az Azure Databricks nem kényszeríti ki az elsődleges kulcsra vagy a külső kulcsra vonatkozó korlátozásokat. Az elsődleges vagy idegen kulcs hozzáadása előtt erősítse meg a kulcskorlátozásokat. A betöltési folyamat biztosíthat ilyen biztosítékot, vagy futtathat ellenőrzéseket az adatain.
Példák
-- 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);