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

Fontos

Ez a funkció a nyilvános előzetes verzióban érhető el.

Információs elsődleges kulcsot vagy információs idegen kulcsot ad hozzá a CREATE TABLE vagy a CREATE MATERIALIZED VIEW utasítás részeként.

Ha ellenőrző kényszert szeretne hozzáadni egy Delta Lake-táblához, használja az ALTER TABLE függvényt a tábla létrehozása után.

Syntax

table_constraint A záradék segítségével 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 ] [...]
       }
     }
   }

column_constraintA zá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 |
      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 ahelyettNOT ENFORCED DEFERRABLE INITIALLY DEFERRED, hogy a ENABLE NOVALIDATE .

Paraméterek

  • KÉNYSZER neve

    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.

  • ELSŐDLEGES KULCS ( key_column [ TIME Standard kiadás RIES ] [, ...] ) [ constraint_option [...] ]

    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 a Unity Catalog felett csak jelölje be az igennel jelölt jelölőnégyzetet

    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 a következőképpen NOT NULLvannak definiálva: .

    A katalógus táblái nem támogatják az hive_metastore 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: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ő.

  • 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: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 a Unity Catalog felett csak jelölje be az igennel jelölt jelölőnégyzetet

    Információs idegenkulcs-korlátozást (hivatkozási integritást) ad hozzá a táblához vagy a materializált nézethez.

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

    Az idegenkulcs-oszlopok permutációjában csak eltérő idegenkulcs-megkötések nem engedélyezettek.

    • foreign_key_column

      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 az s számával parent_column. Két idegen kulcs nem oszthat meg azonos idegenkulcs-oszlopkészletet.

    • parent_table

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

    • parent_column

      A szülőtáblában vagy materializált nézetben lévő oszlop, amely az elsődleges kulcs részét képezi. 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, a definícióban megadott sorrend határozza meg őket PRIMARY KEY .

    • 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

  • 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

      Az Azure Databricks nem használja ki a lekérdezés újraírására vonatkozó kényszert.

  • 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

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