COMPONENT ADD CONSTRAINT

Belangrijk

Deze functie is beschikbaar als openbare preview.

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

Voegt een informatieve primaire sleutel, informatieve refererende sleutel of een afgedwongen controlebeperking toe aan een bestaande Delta Lake-tabel.

Syntaxis

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 }

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

Parameters

  • check_constraint

    Hiermee definieert u een controlebeperking voor een Delta Lake-tabel.

    • CONSTRAINTname

      Hiermee geeft u een naam voor de beperking. De naam moet uniek zijn in de tabel. Als er geen naam is opgegeven, genereert Azure Databricks er een.

    • CHECK (voorwaarde)

      condition moet een deterministische expressie zijn die een BOOLEAN.

      condition kan bestaan uit letterlijke waarden, kolom-id's in de tabel en deterministische, ingebouwde SQL-functies of -operators, met uitzondering van:

      Mag ook condition geen subquery bevatten.

      Om aan een CHECK beperking in Azure Databricks te kunnen voldoen, moet deze worden truegeëvalueerd.

      Delta Lake controleert de geldigheid van de controlebeperking op zowel nieuwe als bestaande gegevens. Als een bestaande rij de beperking schendt, wordt er een fout gegenereerd.

  • key_constraint

    Belangrijk

    Deze functie is beschikbaar als openbare preview.

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

    Definieert een informatieve primaire sleutel of informatieve refererende sleutelbeperking voor een Delta Lake-tabel.

    • CONSTRAINTname

      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.

    • PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ]

      Van toepassing op:vinkje als ja aan alleen Unity Catalog

      Hiermee voegt u een primaire-sleutelbeperking toe aan de Delta Lake-tabel. Een tabel kan maximaal één primaire sleutel hebben.

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

    • key_column

      Een kolom van de onderwerptabel die is gedefinieerd als NOT NULL. 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.

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

      Van toepassing op:vinkje als ja aan alleen Unity Catalog

      Hiermee voegt u een referentiële sleutelbeperking (referentiële integriteit) toe aan de Delta Lake-tabel.

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

      • foreign_key_column

        Een kolom van de onderwerptabel. 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 waarnaar de refererende sleutel verwijst. De tabel moet een gedefinieerde PRIMARY KEY beperking hebben en u moet eigenaar zijn van die tabel.

      • parent_column

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

        Als bovenliggende kolommen niet worden vermeld, worden ze geïmpliceerd om te worden opgegeven in de volgorde die in de PRIMARY KEY definitie is opgegeven.

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

    • 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 of RELY

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

        Als RELYAzure Databricks de beperking kan gebruiken om query's te herschrijven. Het is de verantwoordelijkheid van de gebruiker om ervoor te zorgen dat aan de beperking wordt voldaan. Als u afhankelijk bent van een beperking die niet is voldaan, kan dit leiden tot onjuiste queryresultaten.

        De standaardwaarde is NORELY.

    • 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, hoeft Azure Databricks geen actie te ondernemen 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

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