Créer des contraintes¶
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.
Les contraintes multi-colonnes doivent être créées dans une clause distincte, c’est-à-dire hors ligne, qui spécifie les colonnes de la contrainte.
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.
Création de contraintes en ligne¶
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.
Création de contraintes hors ligne¶
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.
Si seule la table référencée est copiée, aucune nouvelle clé étrangère n’est créée, bien que les clés primaires/uniques soient copiées.
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.