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
Egy információs elsődleges kulcsot vagy egy információs idegen kulcsot ad hozzá egy CREATE TABLE vagy CREATE MATERIALIZED VIEW utasítás részeként.
Ha ellenőrző korlátozást szeretne hozzáadni egy Delta Lake-táblához, használja a ALTER TABLE a tábla létrehozása után.
Szintaxis
A table_constraint
záradék használatával 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 ] [...]
}
}
}
Az column_constraint
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 a ENABLE NOVALIDATE
-t a NOT ENFORCED DEFERRABLE INITIALLY DEFERRED
helyett.
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 [ IDŐSOROZAT ] [, ...] ) [ constraint_option [...] ]A következőkre vonatkozik:
Databricks SQL
Databricks Runtime 11.3 LTS és újabbi verziók
kizárólag a Unity-katalógus
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 határozottak meg, mint
NOT NULL
.A
hive_metastore
katalógus táblái nem támogatják az 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
Az elsődleges kulcsoszlop-összetevő idősorként is címkézhető igény szerint.
-
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 újabbi verziók
kizárólag a Unity-katalógus
Információs idegenkulcs-korlátozást (hivatkozási integritást) ad hozzá a táblához vagy a materializált nézethez.
A
hive_metastore
katalógus tábláiban nem támogatottak az idegenkulcs-korlátozások.Az olyan idegenkulcs-korlátozások nem engedélyezettek, amelyek csak az idegenkulcs-oszlopok permutációjában különböznek.
-
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 aparent_column
számával. Két idegen kulcs nem oszthatja meg az azonos idegen kulcs oszlopait. -
Megadja azt a táblát vagy materializált nézetet, amelyre az idegen kulcs hivatkozik. A táblának rendelkeznie kell egy meghatározott
PRIMARY KEY
korlátozással, és a tábláraSELECT
jogosultsággal kell rendelkeznie. -
Egy oszlop a szülőtáblában vagy a materializált nézetben, amely az elsődleges kulcshoz tartozik. 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, azokat a
PRIMARY KEY
definícióban megadott sorrend határozza meg. 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
-
korlátozási_opció
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 műveleteket a meglévő vagy új sorok érvényesítésére.
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 SQL
igennel jelölt Databricks Runtime 15.4 és újabb verziókra
FOREIGN KEY
korlátozások eseténHa
RELY
az Azure Databricks kihasználhatja a lekérdezések újraírására és optimalizálására vonatkozó korlátozást. 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. A parancshoz társított lekérdezésoptimalizálások megkövetelik, hogy aRELY
lekérdezések Photon-kompatibilis számításon fussanak. Lásd Mi az a Photon?.Az alapértelmezett érték
NORELY
.
külföldi_kulcs_opció
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 igaznak minősüljön, minden oszlopértéknek
NOT NULL
kell lennie.ON UPDATE NO ACTION
Ha a szülő
PRIMARY KEY
frissül, az Azure Databricks sem a frissítés korlátozására, sem az idegen kulcs frissítésére nem hajt végre műveletet.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);