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_constraintzá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
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 [ 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ógusInformá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_metastorekataló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.
TIMESERIESA következőkre vonatkozik:
Databricks SQL
Databricks Runtime 13.3 LTS és újabbAz 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_constraintegyenértékű atable_constraintPRIMARY KEY (key_column) [ constraint_option ] [...]FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_optionA következőkre vonatkozik:
Databricks SQL
Databricks Runtime 11.3 LTS és újabbi verziók
kizárólag a Unity-katalógusInformációs idegenkulcs-korlátozást (hivatkozási integritást) ad hozzá a táblához vagy a materializált nézethez.
A
hive_metastorekataló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_columntípusával. Az oszlopok számának meg kell egyeznie aparent_columnszá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 KEYkorlátozással, és a tábláraSELECTjogosultsá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 KEYdefinícióban megadott sorrend határozza meg. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_optionEgyetlen 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_constraintegyenértékű atable_constraintFOREIGN 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 ENFORCEDAz Azure Databricks nem hajt végre műveleteket 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
igennel jelölt Databricks Runtime 15.4 és újabb verziókra FOREIGN KEYkorlátozások eseténHa
RELYaz 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 aRELYleké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 FULLAhhoz, hogy a kényszer igaznak minősüljön, minden oszlopértéknek
NOT NULLkell lennie.ON UPDATE NO ACTIONHa a szülő
PRIMARY KEYfrissü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 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
-- 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);