ADD CONSTRAINT záradék
Fontos
Ez a funkció a nyilvános előzetes verzióban érhető el.
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.
Syntax
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 }
A nem szabványos SQL-dialektusokkal való kompatibilitás érdekében megadhatja ahelyettNOT ENFORCED DEFERRABLE INITIALLY DEFERRED
, hogy a ENABLE NOVALIDATE
.
Paraméterek
check_constraint
Egy Delta Lake-tábla ellenőrzési kényszerét határozza meg.
CONSTRAINT
névMegadja a kényszer nevét. A névnek egyedinek kell lennie a táblában. Ha nincs megadva név, az Azure Databricks létrehoz egyet.
CHECK (
Feltétel)
condition
determinisztikus kifejezésnek kell lennie, amely egyBOOLEAN
.condition
A tábla 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
Emellett
condition
nem tartalmazhat alqueryt.Ahhoz, hogy egy
CHECK
korlátozás teljesüljön az Azure Databricksben, ki kell értékelnie a következőttrue
: .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_constraint
Fontos
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 újabb
Egy Delta Lake-tábla információs elsődleges kulcsát vagy információs idegenkulcs-korlátozását határozza meg.
CONSTRAINT
né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 [...] ]
Csak a Következőre vonatkozik: Unity Catalog
Elsődleges kulcskorlátozást ad hozzá a Delta Lake-táblához. Egy tábla legfeljebb egy elsődleges kulccsal rendelkezhet.
A katalógus táblái nem támogatják az
hive_metastore
elsődleges kulcskorlátozásokat.-
A tárgytábla
NOT NULL
oszlopa. Az oszlopneveket nem szabad megismételni. TIMESERIES
A következőkre vonatkozik: Databricks SQL Databricks Runtime 13.3 LTS és újabb
Igény szerint az elsődleges kulcsoszlop-összetevőt időbélyegként címkézhető.
FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
Csak a Következőre vonatkozik: Unity Catalog
Idegen kulcsra (hivatkozási integritásra) vonatkozó korlátozást ad hozzá a Delta Lake-táblához.
A katalógus táblái nem támogatják az
hive_metastore
idegenkulcs-korlátozásokat.-
A tárgytábla oszlopa. Az oszlopneveket nem szabad megismételni. Az egyes oszlopok adattípusának meg kell egyeznie az egyező
parent_column
típusával. Az oszlopok számának meg kell egyeznie az oszlopok számávalparent_columns
. Két idegen kulcs nem oszthat meg azonos idegenkulcs-oszlopkészletet. -
Megadja azt a táblát, amelyre az idegen kulcs hivatkozik. A táblának meghatározott
PRIMARY KEY
korlátozással kell rendelkeznie, és önnek kell a táblát birtokolnia. -
A szülőtábla azon oszlopa, amely az elsődleges kulcs része. A szülőtábla összes elsődleges kulcsoszlopának szerepelnie kell a listán.
Ha a szülőoszlopok nincsenek felsorolva, a definícióban megadott sorrendben kell megadni őket
PRIMARY KEY
.
Az idegenkulcs-oszlopok permutációjában csak eltérő idegenkulcs-megkötések nem engedélyezettek.
-
constraint_option
A 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 ENFORCED
Az Azure Databricks nem hajt végre semmilyen műveletet a meglévő vagy új sorok kényszerítéséhez.
DEFERRABLE
A kényszerérvényesítés elhalasztható.
INITIALLY DEFERRED
A kényszerérvényesítés elhalasztva.
NORELY
vagyRELY
A következőkre vonatkozik: Databricks SQL Databricks Runtime 14.2 vagy újabb
Ha
RELY
az Azure Databricks kihasználja 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_option
Az 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 FULL
Ahhoz, hogy a kényszer igaz legyen, minden oszlopértéknek meg kell lennie
NOT NULL
.ON UPDATE NO ACTION
Ha a szülő
PRIMARY KEY
frissítve van, az Azure Databricks nem hajt végre semmilyen műveletet a frissítés korlátozására vagy az idegen kulcs frissítésére.ON DELETE NO ACTION
Ha 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);