Modification des contraintes

Une fois qu’une contrainte est créée :

  • La contrainte peut être renommée.

  • Certaines propriétés peuvent être modifiées, par exemple ENFORCED et VALIDATE.

  • Certaines propriétés ne peuvent pas être modifiées, par exemple DEFERRABLE. Pour modifier ces propriétés, la contrainte doit être supprimée et recréée.

  • La définition de colonne pour une contrainte ne peut pas être modifiée, par exemple, ajouter de nouvelles colonnes, supprimer des colonnes existantes ou modifier l’ordre des colonnes. Pour effectuer ces types de modifications, la contrainte doit être supprimée et recréée.

Lors de la modification d’une contrainte, la contrainte peut être identifiée à l’aide du nom de la contrainte ou des colonnes de la définition de contrainte, ainsi que du type de la contrainte. Les clés primaires peuvent également être identifiées à l’aide du mot clé PRIMARY KEY, car chaque table ne peut contenir qu’une seule clé primaire.

Si une table avec des contraintes est modifiée, par exemple, renommer une table ou une échanger une table avec une autre table, les contraintes sont mises à jour pour refléter les modifications.

Dans ce chapitre :

Renommer une contrainte

Utilisez la syntaxe suivante pour la commande ALTER TABLE pour renommer une contrainte :

ALTER TABLE <table_name> RENAME CONSTRAINT <old_name> TO <new_name>;

Modification des propriétés d’une contrainte

Utilisez la syntaxe suivante pour la commande ALTER TABLE afin de modifier les propriétés d’une contrainte :

ALTER TABLE <table_name>
    { ALTER | MODIFY } { CONSTRAINT <name> | PRIMARY KEY | { UNIQUE | FOREIGN KEY } (<column_name>, [ ... ] ) }
    { [ [ NOT ] ENFORCED ] [ VALIDATE | NOVALIDATE ] };

Actuellement, Snowflake ne prend en charge que la définition des contraintes sur les valeurs par défaut :

NOT ENFORCED NOVALIDATE

Pour obtenir une description des propriétés de la contrainte, voir Propriétés des contraintes.

Modifier une table avec des contraintes

Si une table avec des contraintes est renommée, les contraintes de la table, ainsi que toutes les contraintes de clé étrangère faisant référence à la table, sont mises à jour pour faire référence au nouveau nom.

De même, si une table est échangée avec une autre table existante, toutes les contraintes de la table sont conservées dans la table échangée.

Pour plus d’informations sur le changement de nom ou l’échange de tables, voir ALTER TABLE.