CONSTRAINT záradék
A következőkre vonatkozik: Databricks SQL Databricks Runtime
Információs elsődleges kulcsot vagy információs idegen kulcsot ad hozzá a CREATE TABLE vagy a CREATE MATERIALIZED VIEW utasítás részeként.
Ha ellenőrző kényszert szeretne hozzáadni egy Delta Lake-táblához, használja az ALTER TABLE függvényt a tábla létrehozása után.
Syntax
table_constraint
A záradék segítségével definiálhat több oszlopra kiterjedő korlátozásokat, vagy elválaszthatja a szintaxist az oszlopdefiníciótól.
table_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY ( foreign_key_column [, ...] )
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
column_constraint
A záradék használatával definiálhat egyetlen oszlopdefinícióra vonatkozó korlátozásokat.
column_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY [ constraint_option ] [...] |
{ [ FOREIGN KEY ]
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
constraint_option
{ NOT ENFORCED |
DEFERRABLE |
INITIALLY DEFERRED |
{ RELY | NORELY } }
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
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 [ MUNKAIDŐ-NYILVÁNTARTÁS ] [, ...] ) [ constraint_option [...] ]A következőkre vonatkozik: Databricks SQL Databricks Runtime 11.3 LTS és a Unity Catalog felett csak
Információs elsődlegeskulcs-korlátozást ad hozzá a táblához vagy a materializált nézethez. Egy tábla vagy materializált nézet legfeljebb egy elsődleges kulccsal rendelkezhet.
Az elsődleges kulcsoszlopok implicit módon a következőképpen
NOT NULL
vannak definiálva: .A katalógus táblái nem támogatják az
hive_metastore
elsődleges kulcskorlátozásokat.-
A tárgytábla vagy a materializált nézet 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ő.
-
PRIMARY KEY [ constraint_option ] [...]
Egyetlen oszlop elsődleges kulcskorlátját adja hozzá a táblához vagy a materializált nézethez az előző kulcsoszlopdefiníció használatával.
Ez
column_constraint
egyenértékű atable_constraint
PRIMARY KEY (key_column) [ constraint_option ] [...]
FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_option
A következőkre vonatkozik: Databricks SQL Databricks Runtime 11.3 LTS és a Unity Catalog felett csak
Információs idegenkulcs-korlátozást (hivatkozási integritást) ad hozzá a táblához vagy a materializált nézethez.
A katalógus táblái nem támogatják az
hive_metastore
idegenkulcs-korlátozásokat.Az idegenkulcs-oszlopok permutációjában csak eltérő idegenkulcs-megkötések nem engedélyezettek.
-
A tárgytábla vagy a materializált nézet 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 s számávalparent_column
. Két idegen kulcs nem oszthat meg azonos idegenkulcs-oszlopkészletet. -
Megadja azt a táblát vagy materializált nézetet, amelyre az idegen kulcs hivatkozik. A táblának meghatározott
PRIMARY KEY
korlátozással kell rendelkeznie, és önnek rendelkeznie kell aSELECT
táblán lévő jogosultsággal. -
A szülőtáblában vagy materializált nézetben lévő oszlop, amely az elsődleges kulcs részét képezi. A szülőtábla vagy a materializált nézet összes elsődleges kulcsoszlopának szerepelnie kell a listán.
Ha a szülőoszlopok nincsenek felsorolva, a definícióban megadott sorrend határozza meg őket
PRIMARY KEY
. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
Egyetlen oszlopos idegenkulcs-korlátozást ad hozzá a táblához vagy a materializált nézethez az előző idegenkulcs-oszlopdefiníció használatával.
Ez
column_constraint
egyenértékű atable_constraint
FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
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 és újabb verziókra korlátozások esetén
PRIMARY KEY
A következőkre vonatkozik: Databricks Runtime 15.4 és újabb verziókra korlátozások esetén
FOREIGN KEY
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
-- Create a table with a primary key
> CREATE TABLE persons(first_name STRING NOT NULL, last_name STRING NOT NULL, nickname STRING,
CONSTRAINT persons_pk PRIMARY KEY(first_name, last_name));
-- create a table with a foreign key
> CREATE TABLE pets(name STRING, owner_first_name STRING, owner_last_name STRING,
CONSTRAINT pets_persons_fk FOREIGN KEY (owner_first_name, owner_last_name) REFERENCES persons);
-- Create a table with a single column primary key and system generated name
> CREATE TABLE customers(customerid STRING NOT NULL PRIMARY KEY, name STRING);
-- Create a table with a names single column primary key and a named single column foreign key
> CREATE TABLE orders(orderid BIGINT NOT NULL CONSTRAINT orders_pk PRIMARY KEY,
customerid STRING CONSTRAINT orders_customers_fk REFERENCES customers);