Creating constraints

Une contrainte peut être créée lors de la création d’une table à l’aide de CREATE TABLE ou ultérieurement ajoutée à une table à l’aide de ALTER TABLE :

  • Des contraintes de colonne unique peuvent être créées en ligne dans le cadre de la définition de colonne.

  • Multi-column constraints must be created with a separate out-of-line clause that specifies the columns in the constraint.

Pour créer une contrainte, certains privilèges de contrôle d’accès doivent être accordés au niveau du rôle utilisé pour créer la contrainte. Pour plus d’informations, voir Exigences en matière de contrôle d’accès.

Creating constraints inline

La syntaxe en ligne suivante ne peut être utilisée que pour des contraintes de colonne unique :

CREATE [ OR REPLACE ] TABLE <name> (<column_name> <column_type> [ <inline_constraint> ] , ... )

ALTER TABLE <name> ADD COLUMN <column_name> <column_type> [ <inline_constraint> ]

Pour plus d’informations sur la syntaxe de inline_constraint , voir CREATE | ALTER TABLE … CONSTRAINT.

Creating constraints out-of-line

La syntaxe hors ligne suivante doit être utilisée pour les contraintes multi-colonnes, mais peut également l’être pour les contraintes mono-colonne :

CREATE [ OR REPLACE ] TABLE <name> ( ... , [ <outofline_constraint> ], ... )

ALTER TABLE <name> ADD <outofline_constraint>

Pour plus d’informations sur la syntaxe outofline_constraint , voir CREATE | ALTER TABLE … CONSTRAINT.

Contraintes dans CREATE TABLE … LIKE et CLONE.

Snowflake prend en charge la création de copies de tableaux à l’aide de CREATE TABLE :

  • Pour créer une copie vide, utilisez CREATE TABLE … LIKE.

  • Pour créer un clone, utilisez CREATE TABLE … CLONE.

De plus, des copies de tables sont automatiquement créées lorsqu’un schéma ou une base de données est cloné.

Indépendamment de la façon dont une copie est créée pour une table, les contraintes de la table originale sont également copiées. Lors de la copie d’une clé étrangère avec une table de référence (table de clé étrangère) et une table référencée (table de clé primaire), les scénarios suivants peuvent survenir :

  • Si les deux tables sont copiées dans la même commande (par exemple lors du clonage d’un schéma ou d’une base de données), une nouvelle clé étrangère est créée entre la nouvelle table de référence et la table référencée.

  • Si seule la table de référence est copiée, une nouvelle clé étrangère est créée au niveau de la table de référence. Celle-ci pointe vers la table de clé primaire d’origine, comme table de référence.

  • If only the referenced table is copied, no new foreign keys are created, although the primary or unique keys are copied.

Par conséquent, si vous copiez une table de référence et une table référencée séparément, vous devez créer manuellement une nouvelle clé étrangère ou remplacer manuellement la table de clés primaires par la nouvelle clé étrangère.