Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime
Ajoute une clé primaire informationnelle, une clé étrangère informationnelle ou une contrainte unique informationnelle dans le cadre d’une ou CREATE MATERIALIZED VIEW d’une CREATE TABLE instruction.
Pour ajouter une contrainte de vérification à une table Delta Lake, utilisez ALTER TABLE une fois la table créée.
Syntaxe
Utilisez la clause table_constraint pour définir des contraintes qui s’étendent sur plusieurs colonnes ou pour séparer la syntaxe de la définition de colonne.
table_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY ( key_column [ TIMESERIES ] [, ...] ) [ constraint_option [...] ] |
UNIQUE ( key_column [, ...] ) [ constraint_option [...] ] |
{ FOREIGN KEY ( foreign_key_column [, ...] )
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
Utilisez la clause column_constraint pour définir des contraintes spécifiques à une définition de colonne unique.
column_constraint
{ [ CONSTRAINT name ]
{ PRIMARY KEY [ constraint_option ] [...] |
UNIQUE [ constraint_option ] [...] |
{ [ FOREIGN KEY ]
REFERENCES parent_table [ ( parent_column [, ...] ) ]
[ foreign_key_option | constraint_option ] [...]
}
}
}
constraint_option
{ NOT ENFORCED |
DEFERRABLE |
INITIALLY DEFERRED |
{ RELY | NORELY } }
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
CONSTRAINTnom(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 à :
Databricks SQL
Databricks Runtime 11.3 LTS et versions ultérieures
Unity Catalog uniquementAjoute une contrainte de clé primaire informationnelle à la table ou à la vue matérialisée. Une table ou une vue matérialisée ne peut avoir plus d’une clé primaire.
Les colonnes de clé primaire sont implicitement définies comme
NOT NULL.Les contraintes de clé primaire ne sont pas prises en charge pour les tables du catalogue
hive_metastore.-
Une colonne de la table ou de la vue matérialisée du sujet. Les noms de colonnes ne doivent pas être répétés.
TIMESERIESS’applique à :
Databricks SQL
Databricks Runtime 13.3 LTS et ultérieurVous pouvez éventuellement étiqueter le composant de colonne de clé primaire comme représentant une série chronologique.
-
PRIMARY KEY [ constraint_option ] [...]Ajoute une contrainte de clé primaire à une colonne à la table ou à la vue matérialisée, en utilisant la définition de la colonne clé précédente.
Cette
column_constraintest équivalente à latable_constraintPRIMARY KEY (key_column) [ constraint_option ] [...]UNIQUE ( key_column [, ...] ) [ constraint_option [...] ]S’applique à :
Databricks SQL
Databricks Runtime 18.2 et versions ultérieures
catalogue Unity uniquementAjoute une contrainte unique informationnelle à la table. Une table peut avoir plusieurs contraintes uniques.
Les contraintes uniques ne sont pas prises en charge pour les tables du
hive_metastorecatalogue.Les colonnes d’une
UNIQUEcontrainte peuvent être nullables, notamment lorsque la contrainte est référencée par une clé étrangère.NULLles valeurs dans lesUNIQUEcolonnes sont traitées comme distinctes les unes des autres, de sorte que les valeurs dupliquéesNULLne violent pas la sémantique d’uneUNIQUEcontrainte.-
Colonne de la table objet. Les noms de colonnes ne doivent pas être répétés.
-
UNIQUE [ constraint_option ] [...]Ajoute une contrainte unique de colonne à la table à l’aide de la définition de colonne clé précédente.
Cette
column_constraintest équivalente à latable_constraintUNIQUE (key_column) [ constraint_option ] [...]FOREIGN KEY (foreign_key_column [, ...] ) REFERENCES parent_table [ ( parent_column [, ...] ) ] foreign_key_optionS’applique à :
Databricks SQL
Databricks Runtime 11.3 LTS et versions ultérieures
Unity Catalog uniquementAjoute une contrainte de clé étrangère informationnelle (intégrité référentielle) à la table ou à la vue matérialisée.
Les contraintes de clé étrangère ne sont pas prises en charge pour les tables du catalogue
hive_metastore.Les contraintes de clé étrangère qui diffèrent seulement dans la permutation des colonnes de clé étrangère ne sont pas autorisées.
-
Une colonne de la table ou de la vue matérialisée du 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_columncorrespondante. Le nombre de colonnes doit correspondre au nombre deparent_column. Deux clés étrangères ne peuvent pas partager un ensemble identique de colonnes de clé étrangère. -
Spécifie la table ou la vue matérialisée à laquelle la clé étrangère fait référence. La table doit avoir une contrainte définie
PRIMARY KEYou, dans Databricks Runtime 18.2 et versions ultérieures, une contrainte définieUNIQUEet vous devez avoir leSELECTprivilège sur la table. -
Colonne de la table parente ou vue matérialisée qui fait partie de sa clé primaire ou, dans Databricks Runtime 18.2 et versions ultérieures, partie d’une contrainte unique. Toutes les colonnes clés primaires ou colonnes de contrainte unique de la table parente ou de la vue matérialisée doivent être répertoriées.
Si des colonnes parentes ne sont pas listées, elles sont spécifiées dans l’ordre donné dans la définition de
PRIMARY KEY. FOREIGN KEY REFERENCES parent_table [ ( parent_column ) ] foreign_key_optionAjoute une contrainte de clé étrangère à colonne unique à la table ou à la vue matérialisée, en utilisant la définition de colonne de clé étrangère précédente.
Cette
column_constraintest équivalente à latable_constraintFOREIGN KEY ( foreign_key_column ) REFERENCES parent_table [ ( parent_column ) ] foreign_key_option
-
option_contrainte
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 ENFORCEDAzure Databricks n’effectue aucune action pour l’appliquer pour les lignes existantes ou nouvelles.
DEFERRABLEL’application d’une contrainte peut être différée.
INITIALLY DEFERREDL’application d’une contrainte est différée.
NORELYouRELYS’applique à :
Databricks SQL
Databricks Runtime 14.2 et versions ultérieures pour les contraintes PRIMARY KEYS’applique à :
Databricks SQL
Databricks Runtime 15.4 et versions ultérieures pour FOREIGN KEYles contraintesS’applique à :
Databricks SQL
Databricks Runtime 18.2 et versions ultérieures pour UNIQUEles contraintesSi
RELY, Azure Databricks peut exploiter la contrainte pour réécrire et optimiser les requêtes. Il incombe à l’utilisateur de s’assurer que la contrainte est satisfaite. Si vous vous fiez à une contrainte qui n’est pas satisfaite, les résultats de la requête peuvent être erronés. Les optimisations de requêtes associées à la commande nécessitent que les requêtes s'exécutent sur un système doté de Photon. Consultez Qu’est-ce que Photon ?.Par défaut, il s’agit de
NORELY.
option_clé_étrangère
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 FULLPour que la contrainte soit considérée comme vraie, toutes les valeurs de colonne doivent être
NOT NULL.ON UPDATE NO ACTIONSi la
PRIMARY KEYparente 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 ACTIONSi la ligne parente 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 la clé primaire, la clé étrangère ou les contraintes uniques. Confirmez les contraintes de clé avant d’ajouter une clé primaire, une clé étrangère ou une contrainte unique. Votre processus d’ingestion peut fournir une telle assurance ou bien vous pouvez effectuer des vérifications sur vos données.
Exemples
-- 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);
-- Create a table with a column unique constraint
> CREATE TABLE person_contacts(first_name STRING NOT NULL, last_name STRING NOT NULL,
nickname STRING UNIQUE);
-- Create a table with a multi-column unique constraint
> CREATE TABLE person_accounts(first_name STRING NOT NULL, last_name STRING NOT NULL, account_id STRING,
CONSTRAINT person_accounts_uq UNIQUE(first_name, last_name));
-- Create a table with a foreign key that references a unique column
> CREATE TABLE pet_tags(tag STRING NOT NULL, owner_nickname STRING,
CONSTRAINT pet_tags_owner_fk FOREIGN KEY (owner_nickname) REFERENCES person_contacts(nickname));