Megosztás a következőn keresztül:


ADD CONSTRAINT záradék

A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet 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.

Szintaxis

ADD [check_constraint | key_constraint ]

check_constraint
    CONSTRAINT name CHECK ( condition )

key_constraint
    { [ CONSTRAINT name ]
      {
        PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
        { FOREIGN KEY (foreign_key_column [, ...] )
          REFERENCES parent_relation [ ( 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 meghatározhatja a ENABLE NOVALIDATE helyett a NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Paraméterek

  • check_constraint

    Egy kapcsolat ellenőrzési korlátozását határozza meg.

    • CONSTRAINT név

      Megadja a kényszer nevét. A névnek egyedinek kell lennie a kapcsolaton belül.

    • CHECK ( feltétel)

      A DEFAULT COLLATION kapcsolatnak a kényszer hozzáadásakor kell lennie UTF8_BINARY .

      A(z) condition-nak/nak egy determinisztikus kifejezésnek kell lennie, amely egy BOOLEAN eredményez.

      condition A reláción belüli literálokból, oszlopazonosítókból és determinisztikus, beépített SQL-függvényekből vagy operátorokból állhat, kivéve:

      Emellett condition nem tartalmazhat al-lekérdezést.

      Ahhoz, hogy egy CHECK korlátozás teljesüljön az Azure Databricksben, az értékének true-nek kell lennie.

      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:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 11.3 LTS és újabb

    Egy kapcsolat információs elsődleges kulcsát vagy információs idegenkulcs-korlátozását határozza meg. Az információs kulcsokra vonatkozó korlátozások nincsenek kényszerítve, de a lekérdezésoptimalizálás támogatásával javíthatja a teljesítményt.

    • CONSTRAINT név

      Opcioná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 [...] ]

      A következőkre vonatkozik:'igen'-nel bejelölt kizárólag a Unity Catalog

      Elsődleges kulcskorlátozást ad hozzá a kapcsolathoz. Egy reláció legfeljebb egy elsődleges kulccsal rendelkezhet.

      A katalógusban hive_metastore lévő kapcsolatok esetében az elsődleges kulcskorlátozások nem támogatottak.

    • key_column

      A tárgyreláció oszlopa, amely a következőként NOT NULLvan definiálva: . Az oszlopneveket nem szabad megismételni.

    • TIMESERIES

      A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 13.3 LTS és újabb

      Opcionálisan az elsődleges kulcs oszlopának komponensét idősorként címkézheti.

    • FOREIGN KEY ( foreign_key_column [, ...] ) REFERENCES parent_relation [ ( parent_column [, ...] ) ] foreign_key_option

      A következőkre vonatkozik:'igen'-nel bejelölt kizárólag a Unity Catalog

      Idegen kulcs (hivatkozási integritás) korlátozását adja hozzá a kapcsolathoz.

      A katalógusban lévő kapcsolatok nem támogatják a hive_metastore külső kulcskorlátozásokat.

      • idegen_kulcs_oszlop

        A tárgy-reláció 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 a parent_columnsszámával. Két idegen kulcs nem oszthatja meg ugyanazt az idegen kulcs oszlopkészletet.

      • parent_relation

        Megadja azt a relációt, amelyre az idegen kulcs hivatkozik. A relációnak meghatározott PRIMARY KEY korlátozással kell rendelkeznie, és önnek rendelkeznie kell a SELECT relációs jogosultsággal.

      • parent_column

        A szülőreláció azon oszlopa, amely az elsődleges kulcs része. A szülőreláció összes elsődleges kulcsoszlopát fel kell sorolni.

        Ha a szülőoszlopok nem szerepelnek a listában, azokat a PRIMARY KEY definícióban megadott sorrendben kell megadni.

      Olyan idegenkulcs-megkötések, amelyek csak az idegenkulcs-oszlopok sorrendjében különböznek, 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 é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 vagy RELY

        A következőkre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 14.2 és újabb verziókra korlátozások esetén PRIMARY KEY

        A következőkre vonatkozik:igen jelöléssel Databricks SQL igen jelöléssel Databricks Runtime 15.4 és újabb verziókra FOREIGN KEY korlátozások esetén

        Ha RELY, az Azure Databricks kihasználhatja 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 igaznak minősüljön, minden oszlopértéknek NOT NULLkell lennie.

      • ON UPDATE NO ACTION

        Ha a szülőt PRIMARY KEY frissítik, az Azure Databricks nem hajt végre semmilyen műveletet a frissítés korlátozására vagy az idegen kulcs módosítására.

      • 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);