CONSTRAINT-component

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime

Belangrijk

Deze functie is beschikbaar als openbare preview.

Voegt een informatieve primaire sleutel of een informatieve refererende sleutel toe als onderdeel van een CREATE TABLE - of CREATE MATERIALIZED VIEW-instructie .

Als u een controlebeperking wilt toevoegen aan een Delta Lake-tabel, gebruikt u ALTER TABLE nadat de tabel is gemaakt.

Syntaxis

Gebruik de table_constraint component om beperkingen te definiëren die meerdere kolommen omvatten of om de syntaxis te scheiden van de kolomdefinitie.

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 ] [...]
       }
     }
   }

Gebruik de column_constraintcomponent om beperkingen te definiëren die specifiek zijn voor één kolomdefinitie.

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 }

Voor compatibiliteit met niet-standaard SQL-dialecten kunt u opgeven ENABLE NOVALIDATE in plaats van NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Parameters

  • CONSTRAINT-naam

    Hiermee geeft u desgewenst een naam op voor de beperking. De naam moet uniek zijn binnen het schema. Als er geen naam is opgegeven, genereert Azure Databricks er een.

  • PRIMAIRE SLEUTEL ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]

    Van toepassing op:vinkje als ja aan Alleen Databricks SQL vinkje als ja aan Databricks Runtime 11.3 LTS en hoger vinkje als ja aan dan Unity Catalog

    Hiermee voegt u een primaire sleutelbeperking ter informatie toe aan de tabel of gerealiseerde weergave. Een tabel of gerealiseerde weergave kan maximaal één primaire sleutel hebben.

    Primaire-sleutelkolommen worden impliciet gedefinieerd als NOT NULL.

    Primaire-sleutelbeperkingen worden niet ondersteund voor tabellen in de hive_metastore catalogus.

    • key_column

      Een kolom van de onderwerptabel of gerealiseerde weergave. Kolomnamen mogen niet worden herhaald.

    • TIMESERIES

      Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 13.3 LTS en hoger

      U kunt desgewenst het primaire-sleutelkolomonderdeel labelen als een tijdreeks.

  • PRIMARY KEY [ constraint_option ] [...]

    Hiermee voegt u een primaire sleutelbeperking voor één kolom toe aan de tabel- of gerealiseerde weergave, met behulp van de voorgaande sleutelkolomdefinitie.

    Dit column_constraint komt overeen met de table_constraint

    PRIMARY KEY (key_column) [ constraint_option ] [...]

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

    Van toepassing op:vinkje als ja aan Alleen Databricks SQL vinkje als ja aan Databricks Runtime 11.3 LTS en hoger vinkje als ja aan dan Unity Catalog

    Hiermee voegt u een referentiële sleutelbeperking (referentiële integriteit) toe aan de tabel of gerealiseerde weergave.

    Beperkingen voor refererende sleutels worden niet ondersteund voor tabellen in de hive_metastore catalogus.

    Beperkingen voor refererende sleutels die alleen verschillen in de permutatie van de kolommen met refererende sleutels zijn niet toegestaan.

    • foreign_key_column

      Een kolom van de onderwerptabel of gerealiseerde weergave. Kolomnamen mogen niet worden herhaald. Het gegevenstype van elke kolom moet overeenkomen met het type van de overeenkomende parent_columnkolom. Het aantal kolommen moet overeenkomen met het aantal parent_columns. Twee refererende sleutels kunnen geen identieke set refererende-sleutelkolommen delen.

    • parent_table

      Hiermee geeft u de tabel of gerealiseerde weergave waarnaar de refererende sleutel verwijst. De tabel moet een gedefinieerde PRIMARY KEY beperking hebben en u moet de eigenaar zijn van die tabel of gerealiseerde weergave.

    • parent_column

      Een kolom in de bovenliggende tabel of gerealiseerde weergave die deel uitmaakt van de primaire sleutel. Alle primaire-sleutelkolommen van de bovenliggende tabel of gerealiseerde weergave moeten worden weergegeven.

      Als bovenliggende kolommen niet worden weergegeven, worden deze opgegeven door de volgorde die in de PRIMARY KEY definitie is opgegeven.

    • FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

      Hiermee voegt u een externe sleutelbeperking voor één kolom toe aan de tabel- of gerealiseerde weergave, met behulp van de voorgaande definitie van de refererende sleutel.

      Dit column_constraint komt overeen met de table_constraint

      FOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option

  • constraint_option

    Hiermee worden de eigenschappen van de beperkingen weergegeven. Alle eigenschappen zijn optioneel, maar worden standaard geïmpliceerd. Elke eigenschap kan maximaal eenmaal worden opgegeven.

    • NOT ENFORCED

      Azure Databricks voert geen actie uit om deze af te dwingen voor bestaande of nieuwe rijen.

    • DEFERRABLE

      De afdwinging van beperkingen kan worden uitgesteld.

    • INITIALLY DEFERRED

      Afdwingen van beperkingen wordt uitgesteld.

    • NORELY

      Azure Databricks maakt geen gebruik van de beperking om een query te herschrijven.

  • foreign_key_option

    Geeft een lijst van de eigenschappen die specifiek zijn voor beperkingen voor refererende sleutels. Alle eigenschappen zijn optioneel, maar worden standaard geïmpliceerd. Elke eigenschap kan maximaal eenmaal worden opgegeven.

    • MATCH FULL

      Als de beperking als waar moet worden beschouwd, moeten alle kolomwaarden zijn NOT NULL.

    • ON UPDATE NO ACTION

      Als het bovenliggende PRIMARY KEY item wordt bijgewerkt, neemt Azure Databricks geen actie om de update te beperken of de refererende sleutel bij te werken.

    • ON DELETE NO ACTION

      Als de bovenliggende rij wordt verwijderd, neemt Azure Databricks geen actie om de actie te beperken, de refererende sleutel bij te werken of de afhankelijke rij te verwijderen.

Belangrijk

Azure Databricks dwingt geen beperkingen voor primaire of refererende sleutels af. Bevestig sleutelbeperkingen voordat u een primaire of refererende sleutel toevoegt. Uw opnameproces kan dergelijke zekerheid bieden of u kunt controles uitvoeren op basis van uw gegevens.

Voorbeelden

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