ADD CONSTRAINT-clausule

Van toepassing op:aangevinkt als ja Databricks SQL aangevinkt als ja Databricks Runtime

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

Syntaxis

ADD [check_constraint | key_constraint ]

check_constraint
    CONSTRAINT name CHECK ( condition )

key_constraint
    { [ CONSTRAINT name ]
      {
        PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
        UNIQUE ( key_column [, ...] ) [ constraint_option [...] ] |
        { FOREIGN KEY (foreign_key_column [, ...] )
          REFERENCES parent_relation [ ( 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.

Parameterwaarden

  • check_constraint

    Hiermee definieert u een controlebeperking voor een relatie.

    • CONSTRAINT naam

      Hiermee geeft u een naam voor de beperking. De naam moet uniek zijn binnen de relatie.

    • CHECK ( voorwaarde)

      De DEFAULT COLLATION relatie moet zijn UTF8_BINARY op het moment dat de beperking wordt toegevoegd.

      condition moet een deterministische expressie zijn die een BOOLEAN.

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

      Mag ook condition geen subquery bevatten.

      Om aan een CHECK beperking te voldoen in Azure Databricks, moet deze gelijk zijn aan true.

      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 gemeld.

  • 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, informatieve refererende sleutel of informatieve unieke beperking voor een relatie. Beperkingen voor informatieve sleutels worden niet afgedwongen, maar kunnen de prestaties verbeteren door ondersteuning te bieden voor queryoptimalisaties.

    • 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.

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

      Van toepassing op:met vinkje ja alleen Unity Catalog

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

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

    • key_column

      Een kolom met de onderwerprelatie 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

      Desgewenst kunt u de kolom van de primaire sleutel labelen als een tijdreeks.

    • UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]

      Van toepassing op:controleren gemarkeerd ja Databricks SQL-controle gemarkeerd als ja Databricks Runtime 18.2 en hoger, vink alleen ja Unity Catalog aan

      Voegt een unieke beperking toe aan de relatie. Een relatie kan meerdere unieke beperkingen hebben.

      Kolommen in een UNIQUE beperking kunnen null-waarden hebben. NULL waarden in UNIQUE kolommen worden behandeld als verschillend van elkaar, dus dubbele NULL waarden schenden de semantiek van een UNIQUE beperking niet.

      Unieke beperkingen worden niet ondersteund voor relaties in de hive_metastore catalogus.

      • key_column

        Een kolom van de onderwerprelatie. Kolomnamen mogen niet worden herhaald.

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

      Van toepassing op:met vinkje ja alleen Unity Catalog

      Hiermee voegt u een referentiële sleutelbeperking (referentiële integriteit) toe aan de relatie.

      Beperkingen voor foreign keys worden niet ondersteund voor relaties in de hive_metastore catalog.

      • vreemde_sleutel_kolom

        Een kolom van de onderwerprelatie. Kolomnamen mogen niet worden herhaald. Het gegevenstype van elke kolom moet overeenkomen met het type overeenkomende parent_column. Het aantal kolommen moet overeenkomen met het aantal parent_columns. Twee vreemde sleutels kunnen geen identieke set vreemde-sleutelkolommen delen.

      • parent_relation

        Hiermee geeft u de relatie op waarnaar de vreemde sleutel verwijst. De relatie moet een gedefinieerde PRIMARY KEY beperking hebben of, in Databricks Runtime 18.2 en hoger, een gedefinieerde UNIQUE beperking en u moet de SELECT bevoegdheid hebben voor de relatie.

      • parent_column

        Een kolom in de bovenliggende relatie die deel uitmaakt van de primaire sleutel of, in Databricks Runtime 18.2 en hoger, onderdeel van een unieke beperking. Alle primaire-sleutelkolommen of unieke beperkingskolommen van de bovenliggende relatie moeten worden vermeld.

        Als bovenliggende kolommen niet worden vermeld, worden ze verondersteld in de volgorde te staan zoals gespecificeerd in de PRIMARY KEY-definitie.

      Beperkingen voor vreemde sleutels die alleen verschillen in de volgorde van de vreemde sleutelkolommen 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 voor beperkingen PRIMARY KEY

        Van toepassing op:aangevinkt ja Databricks SQL aangevinkt ja Databricks Runtime 15.4 en hoger voor FOREIGN KEY beperkingen

        Van toepassing op:controleren gemarkeerd ja Databricks SQL-controle gemarkeerd als ja Databricks Runtime 18.2 en hoger voor UNIQUE beperkingen

        Als RELY, kan Azure Databricks gebruikmaken van de beperking 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 foreign key-beperkingen. 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 worden NOT NULL.

      • ON UPDATE NO ACTION

        Als de bovenliggende PRIMARY KEY wordt bijgewerkt, onderneemt Azure Databricks geen actie om de bijwerking te beperken of de vreemde sleutel bij te werken.

      • ON DELETE NO ACTION

        Als de bovenliggende rij wordt verwijderd, onderneemt 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 primaire sleutel, refererende sleutel of unieke beperkingen af. Bevestig sleutelbeperkingen voordat u een primaire sleutel, refererende sleutel of unieke beperking 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);

-- Add a unique constraint
> CREATE TABLE person_emails(first_name STRING NOT NULL, last_name STRING NOT NULL, email STRING);
> ALTER TABLE person_emails ADD CONSTRAINT person_emails_uq UNIQUE(email);