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, egy információs idegen kulcsot vagy egy információs egyedi kényszert ad hozzá egy CREATE TABLE vagy CREATE MATERIALIZED VIEW egy 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 [...] ] |
UNIQUE ( key_column [, ...] ) [ 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 ] [...] |
UNIQUE [ 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 ] [...]UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]A következőre vonatkozik:
Databricks SQL
Databricks Runtime 18.2 and above
Unity Catalog onlyInformációs egyedi korlátozást ad hozzá a táblához. Egy tábla több egyedi korlátozással is rendelkezhet.
A katalógus táblái nem támogatják az
hive_metastoreegyedi korlátozásokat.A kényszer oszlopai
UNIQUEnull értékűek lehetnek, beleértve azt is, ha a kényszerre idegen kulcs hivatkozik.NULLaz oszlopok értékeiUNIQUEegymástól eltérőként vannak kezelve, így az ismétlődőNULLértékek nem sértik aUNIQUEkényszer szemantikáját.-
A tárgytábla oszlopa. Az oszlopneveket nem szabad megismételni.
-
UNIQUE [ constraint_option ] [...]Egyetlen oszlop egyedi korlátozását adja hozzá a táblához az előző kulcsoszlopdefiníció használatával.
Ez
column_constraintegyenértékű atable_constraintUNIQUE (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 meghatározott
PRIMARY KEYkényszerrel vagy a Databricks Runtime 18.2-s vagy újabb verziójában meghatározottUNIQUEkényszerrel kell rendelkeznie, és a táblán jogosultsággal kell rendelkeznieSELECT. -
Egy olyan oszlop a szülőtáblában vagy materializált nézetben, amely az elsődleges kulcs része, vagy a Databricks Runtime 18.2-ben vagy újabb verzióiban egy egyedi korlátozás része. A szülőtábla vagy a materializált nézet összes elsődleges kulcsoszlopát vagy egyedi kényszeroszlopát fel kell sorolni.
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énA következőre vonatkozik:
Databricks SQL
Databricks Runtime 18.2 and above for UNIQUEconstraintsHa
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
Azure Databricks nem kényszeríti ki az elsődleges kulcsot, az idegen kulcsot vagy az egyedi korlátozásokat. Az elsődleges kulcs, idegen kulcs vagy egyedi kényszer 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);
-- Create a table with a column unique constraint
> CREATE TABLE person_contacts(first_name STRING NOT NULL, last_name STRING NOT NULL,
nickname STRING UNIQUE);
-- Create a table with a multi-column unique constraint
> CREATE TABLE person_accounts(first_name STRING NOT NULL, last_name STRING NOT NULL, account_id STRING,
CONSTRAINT person_accounts_uq UNIQUE(first_name, last_name));
-- Create a table with a foreign key that references a unique column
> CREATE TABLE pet_tags(tag STRING NOT NULL, owner_nickname STRING,
CONSTRAINT pet_tags_owner_fk FOREIGN KEY (owner_nickname) REFERENCES person_contacts(nickname));