ADD CONSTRAINT záradék

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

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.

Syntax

ADD [check_constraint | key_constraint ]

check_constraint
    CONSTRAINT name CHECK ( condition ) [ ENFORCED ]

key_constraint
    { [ CONSTRAINT name ]
      {
        PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
        { FOREIGN KEY (foreign_key_column [, ...] )
          REFERENCES parent_table [ ( 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 megadhatja ahelyettNOT ENFORCED DEFERRABLE INITIALLY DEFERRED, hogy a ENABLE NOVALIDATE .

Paraméterek

  • check_constraint

    Egy Delta Lake-tábla ellenőrzési kényszerét határozza meg.

    • CONSTRAINTnév

      Megadja a kényszer nevét. A névnek egyedinek kell lennie a táblában. Ha nincs megadva név, az Azure Databricks létrehoz egyet.

    • CHECK (Feltétel)

      condition determinisztikus kifejezésnek kell lennie, amely egy BOOLEAN.

      condition A tábla 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 alqueryt.

      Ahhoz, hogy egy CHECK korlátozás teljesüljön az Azure Databricksben, ki kell értékelnie a következőt true: .

      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 Delta Lake-tábla információs elsődleges kulcsát vagy információs idegenkulcs-korlátozását határozza meg.

    • CONSTRAINTné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 [...] ]

      Csak a Következőre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Unity Catalog

      Elsődleges kulcskorlátozást ad hozzá a Delta Lake-táblához. Egy tábla legfeljebb egy elsődleges kulccsal rendelkezhet.

      A katalógus táblái nem támogatják az hive_metastore elsődleges kulcskorlátozásokat.

    • key_column

      A tárgytábla NOT NULLoszlopa. 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

      Igény szerint az elsődleges kulcsoszlop-összetevőt időbélyegként címkézhető.

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

      Csak a Következőre vonatkozik:jelölje be az igennel jelölt jelölőnégyzetet Unity Catalog

      Idegen kulcsra (hivatkozási integritásra) vonatkozó korlátozást ad hozzá a Delta Lake-táblához.

      A katalógus táblái nem támogatják az hive_metastore idegenkulcs-korlátozásokat.

      • foreign_key_column

        A tárgytábla 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 az oszlopok számával parent_columns. Két idegen kulcs nem oszthat meg azonos idegenkulcs-oszlopkészletet.

      • parent_table

        Megadja azt a táblát, amelyre az idegen kulcs hivatkozik. A táblának meghatározott PRIMARY KEY korlátozással kell rendelkeznie, és önnek kell a táblát birtokolnia.

      • parent_column

        A szülőtábla azon oszlopa, amely az elsődleges kulcs része. A szülőtábla összes elsődleges kulcsoszlopának szerepelnie kell a listán.

        Ha a szülőoszlopok nincsenek felsorolva, a definícióban megadott sorrendben kell megadni őket PRIMARY KEY .

      Az idegenkulcs-oszlopok permutációjában csak eltérő idegenkulcs-megkötések 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 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 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 vagy újabb

        Ha RELYaz 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

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