Modification des contraintes

Une fois qu’une contrainte est créée, vous pouvez la modifier de la manière suivante :

  • La contrainte peut être renommée.

  • Certaines propriétés peuvent être modifiées ; par exemple, RELY.

  • 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, identifiez la contrainte à 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 PRIMARY KEY.

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

Renommage d’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 ] [ RELY | NORELY ] };

Pour les contraintes CHECK, le constraint_name est nécessaire. De plus, vous ne pouvez pas modifier le expr associé à une contrainte CHECK. Pour modifier le expr, la contrainte CHECK doit être détruite et recréée.

Actuellement, Snowflake ne prend en charge que la définition des propriétés de contrainte suivantes :

  • [ NOT ] ENFORCED

  • NOVALIDATE et VALIDATE

  • RELY et NORELY

Snowflake ne prend pas en charge le paramètre ENFORCED. Snowflake ne prend en charge que le paramètre NOVALIDATE pour les contraintes CHECK. Voir aussi Valeurs autres que par défaut pour les propriétés ENABLE et VALIDATE.

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

Modification d’une table avec des contraintes

Si une table avec des contraintes est renommée, les contraintes de la table, ainsi que toutes les contraintes FOREIGN KEY 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, 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.