Aperçu des contraintes

Snowflake offre la fonctionnalité de contrainte suivante :

  • Clés uniques, primaires et étrangères et colonnes NOT NULL.

  • Contraintes nommées.

  • Contraintes pour une colonne et plusieurs colonnes.

  • Création de contraintes en ligne et hors ligne.

  • Prise en charge de la création, de la modification et de la suppression des contraintes.

Dans ce chapitre :

Types de contraintes pris en charge

Snowflake prend en charge les types de contraintes suivants de la norme ANSI SQL :

  • UNIQUE

  • PRIMARY KEY

  • FOREIGN KEY

  • NOT NULL

Une table peut avoir plusieurs clés uniques et des clés étrangères, mais une seule clé primaire. Toutes les clés étrangères doivent faire référence à une clé primaire ou unique correspondant aux types de colonnes de chaque colonne de la clé étrangère. La clé primaire d’une clé étrangère peut se trouver sur une table différente ou sur la même table que la clé étrangère.

Note

Snowflake prend en charge la définition et le maintien des contraintes, mais ne les applique pas, sauf pour les contraintes NOT NULL, qui sont toujours appliquées.

Contraintes de tables

Snowflake prend en charge la définition des contraintes sur les tables permanentes, transitoires et temporaires. Les contraintes peuvent être définies sur des colonnes de tous les types de données et il n’y a pas de limite quant au nombre de colonnes pouvant être incluses dans une contrainte.

  • Lorsqu’une table est copiée à l’aide de CREATE TABLE … LIKE or CREATE TABLE … CLONE, toutes les contraintes existantes sur la table, y compris les clés étrangères, sont copiées dans la nouvelle table.

  • Des commandes et fonctions supplémentaires, telles que DROP/UNDROP et GET_DDL sont prises en charge pour les tables avec des contraintes. Elles sont également prises en charge pour les schémas et les bases de données.

    Pour Snowflake Time Travel, lorsque des versions précédentes d’une table sont copiées, la version actuelle des contraintes de la table est utilisée car Snowflake ne stocke pas les versions précédentes des contraintes dans les métadonnées de la table.

Contraintes pour une ou plusieurs colonnes

Les contraintes peuvent être définies pour une seule colonne ou plusieurs colonnes d’une même table.

Pour les contraintes multi-colonnes (c’est-à-dire les clés primaires composées ou les clés uniques), les colonnes sont ordonnées, et chaque colonne a une séquence de clés correspondante.

Contraintes en ligne et hors ligne

Les contraintes sont définies en ligne ou hors ligne lors de la création ou de la modification d’une table :

  • Les contraintes en ligne sont créées dans le cadre de la définition de colonne et ne peuvent être utilisées que pour les contraintes à colonne unique.

  • Les contraintes hors ligne sont définies à l’aide d’une clause distincte qui spécifie la ou les colonnes sur lesquelles la contrainte est créée. Elles peuvent être utilisées pour créer des contraintes pour une ou plusieurs colonnes, ainsi que pour créer des contraintes pour des colonnes existantes.