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


CONSTRAINT klauzula

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

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

  • 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 [ IDŐSOROZAT ] [, ...] ) [ constraint_option [...] ]

    A következőkre vonatkozik:igennel jelölt Databricks SQL igennel jelölt Databricks Runtime 11.3 LTS és újabbi verziók igennel jelölt 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.

    • key_column

      A tárgytábla vagy a materializált nézet oszlopa. Az oszlopneveket nem szabad megismételni.

    • TIMESERIES

      A következőkre vonatkozik:igennel megjelölve Databricks SQL igennel megjelölve 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ű a table_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:igennel jelölt Databricks SQL igennel jelölt Databricks Runtime 11.3 LTS és újabbi verziók igennel jelölt 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.

    • idegen_kulcs_oszlop

      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 a parent_columnszámával. Két idegen kulcs nem oszthatja meg az azonos idegen kulcs oszlopait.

    • parent_table

      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ára SELECT jogosultsággal kell rendelkeznie.

    • parent_column

      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ű a table_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 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:igennel jelölt Databricks SQL igennel jelölt Databricks Runtime 15.4 és újabb verziókra FOREIGN KEY korlátozások esetén

      Ha 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 a RELY 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 NULLkell 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);