Partager via


Clause ADD CONSTRAINT

S’applique à : case marquée oui Databricks SQL case marquée oui Databricks Runtime

Ajoute une clé primaire informative, une clé étrangère informative ou une contrainte de vérification appliquée à une table Delta Lake existante.

Syntaxe

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 }

Pour la compatibilité avec les dialectes SQL non standard, vous pouvez spécifier ENABLE NOVALIDATE au lieu de NOT ENFORCED DEFERRABLE INITIALLY DEFERRED.

Paramètres

  • check_constraint

    Définit une contrainte de validation pour une table Delta Lake.

    • CONSTRAINTname

      Spécifie un nom pour la contrainte. Ce nom doit être unique dans la table. Si aucun nom n’est fourni, Azure Databricks en génère un.

    • CHECK (condition)

      condition doit être une expression déterministe qui retourne un BOOLEAN.

      condition peut être composé de littéraux, d’identificateurs de colonnes dans la table, et de fonctions ou d’opérateurs SQL déterministes intégrés, à l’exception de :

      conditionNe doit pas non plus contenir de sous-requête.

      Pour qu’une contrainte de CHECK soit satisfaite dans Azure Databricks, elle doit avoir la valeur true.

      Delta Lake vérifie la validité de la contrainte de validation par rapport aux données nouvelles et existantes. Si une ligne existante enfreint la contrainte, une erreur est générée.

  • key_constraint

    Important

    Cette fonctionnalité est disponible en préversion publique.

    S’applique à : coche marquée oui Databricks SQL coche pour oui Databricks Runtime 11.3 LTS et ultérieur

    Définit une contrainte de clé primaire informative ou une clé étrangère informative pour une table Delta Lake contrainte.

    • CONSTRAINTname

      (Facultatif) Spécifie un nom pour la contrainte. Le nom doit être unique au sein du schéma. Si aucun nom n’est fourni, Azure Databricks en génère un.

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

      S’applique à : coche pour oui Unity Catalog uniquement

      Ajoute une contrainte de clé primaire à la table Delta Lake. Une table peut avoir au plus une clé primaire.

      Les contraintes de clé primaire ne sont pas prises en charge pour les tables du catalogue hive_metastore.

    • key_column

      Colonne de la table sujet définie comme NOT NULL. Les noms de colonnes ne doivent pas être répétés.

    • TIMESERIES

      S’applique à : coche marquée oui Databricks SQL case marquée oui Databricks Runtime 13.3 LTS et ultérieur

      Vous pouvez éventuellement étiqueter le composant de colonne de clé primaire comme représentant une série chronologique.

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

      S’applique à : coche pour oui Unity Catalog uniquement

      Ajoute une contrainte de clé étrangère (intégrité référentielle) à la table Delta Lake.

      Les contraintes de clé étrangère ne sont pas prises en charge pour les tables du catalogue hive_metastore.

      • foreign_key_column

        Colonne de la table sujet. Les noms de colonnes ne doivent pas être répétés. Le type de données du domaine doit correspondre au type de la parent_column correspondante. Le nombre de colonnes doit correspondre au nombre de parent_columns. Deux clés étrangères ne peuvent pas partager un ensemble identique de colonnes de clé étrangère.

      • parent_table

        Spécifie la table à laquelle la clé étrangère fait référence. La table doit avoir une contrainte de PRIMARY KEY définie et vous devez disposer du privilège SELECT sur la table.

      • parent_column

        Colonne de la table parente qui fait partie de sa clé primaire. Toutes les colonnes de clé primaire de la table parente doivent être listées.

        Si des colonnes parentes ne sont pas listées, elles sont implicitement spécifiées dans l’ordre donné dans la définition PRIMARY KEY.

      Les contraintes de clé étrangère qui diffèrent seulement dans la permutation des colonnes de clé étrangère ne sont pas autorisées.

    • constraint_option

      Liste les propriétés des contraintes. Toutes les propriétés sont facultatives mais implicites par défaut. Chaque propriété ne peut être spécifiée qu’une seule fois.

      • NOT ENFORCED

        Azure Databricks n’effectue aucune action pour l’appliquer pour les lignes existantes ou nouvelles.

      • DEFERRABLE

        L’application d’une contrainte peut être différée.

      • INITIALLY DEFERRED

        L’application d’une contrainte est différée.

      • NORELY ou RELY

        S’applique à :coche pour oui Databricks SQL coche marquée oui Databricks Runtime 14.2 et versions ultérieures pour les contraintes PRIMARY KEY

        S’applique à :coche marquée oui Databricks Runtime 15.4 et versions ultérieures pour les contraintes FOREIGN KEY

        Si RELY, Azure Databricks peut exploiter la contrainte pour réécrire des requêtes. Il incombe à l’utilisateur de s’assurer que la contrainte est respectée. Si vous vous fiez à une contrainte qui n’est pas satisfaite, les résultats de la requête peuvent être erronés.

        Par défaut, il s’agit de NORELY.

    • foreign_key_option

      Liste les propriétés spécifiques aux contraintes de clé étrangère. Toutes les propriétés sont facultatives mais implicites par défaut. Chaque propriété ne peut être spécifiée qu’une seule fois.

      • MATCH FULL

        Pour que la contrainte soit considérée comme vraie, toutes les valeurs de colonne doivent être NOT NULL.

      • ON UPDATE NO ACTION

        Si la PRIMARY KEY principale est mise à jour, Azure Databricks n’effectue aucune action pour limiter la mise à jour ou pour mettre à jour la clé étrangère.

      • ON DELETE NO ACTION

        Si la ligne principale est supprimée, Azure Databricks n’effectue aucune action pour restreindre l’action, mettre à jour la clé étrangère ou supprimer la ligne dépendante.

Important

Azure Databricks n’applique pas de contraintes de clé primaire ou de clé étrangère. Vérifiez les contraintes de clé avant d’ajouter une clé primaire ou étrangère. Votre processus d’ingestion peut fournir une telle assurance ou bien vous pouvez effectuer des vérifications sur vos données.

Exemples

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