Propriétés des contraintes

Les propriétés de contrainte sont spécifiées dans la clause CONSTRAINT pour une commande CREATE TABLE ou ALTER TABLE.

Dans ce chapitre :

Propriétés des contraintes ANSI SQL

Propriétés pour toutes les contraintes

Les propriétés de contrainte suivantes de la norme ANSI SQL s’appliquent à toutes les contraintes (unique, clé primaire et clé étrangère) :

ENFORCED | NOT ENFORCED

Spécifie si la contrainte est appliquée dans une transaction. Notez que NOT NULL est la seule contrainte imposée par Snowflake. Voir Contraintes d’intégrité référentielle.

DEFERRABLE | NOT DEFERRABLE

Spécifie si, dans les transactions suivantes, le contrôle de contrainte peut être différé jusqu’à la fin de la transaction.

INITIALLY { DEFERRED | IMMEDIATE }

Pour les contraintes DEFERRABLE, spécifie si la vérification des contraintes est différée à partir de la transaction suivante.

Les propriétés par défaut des propriétés de contrainte standard sont les suivantes :

NOT ENFORCED DEFERRABLE INITIALLY DEFERRED

Propriétés pour les contraintes de clé étrangère uniquement

Les propriétés de contrainte suivantes proviennent également de la norme ANSI SQL, mais ne s’appliquent qu’aux clés étrangères :

MATCH { FULL | PARTIAL | SIMPLE }

Spécifie si la contrainte de clé étrangère est satisfaite en ce qui concerne les valeurs NULL dans une ou plusieurs colonnes.

UPDATE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }

Spécifie l’action effectuée lorsque la clé primaire / unique d’une clé étrangère est mise à jour ou supprimée.

DELETE { CASCADE | SET NULL | SET DEFAULT | RESTRICT | NO ACTION }

Spécifie l’action effectuée lorsque la clé primaire / unique de la clé étrangère est supprimée.

Les valeurs par défaut des propriétés de contrainte de clé étrangère sont les suivantes :

MATCH FULL UPDATE NO ACTION DELETE NO ACTION

Propriétés de contrainte étendue

Les propriétés suivantes ne font pas partie de la norme ANSI SQL, mais sont prises en charge pour la compatibilité avec d’autres bases de données. Elles s’appliquent à toutes les contraintes (unique, clé primaire et clé étrangère) :

ENABLE | DISABLE

Spécifie si la contrainte est activée ou désactivée. Ces propriétés sont fournies pour la compatibilité avec Oracle.

VALIDATE | NOVALIDATE

Indique si les données existantes de la table doivent être validées lors de la création d’une contrainte. Utilisé uniquement avec la propriété ENABLE | DISABLE.

RELY | NORELY

Indique si une contrainte en mode NOVALIDATE est prise en compte lors de la réécriture de la requête.

Les valeurs par défaut des propriétés de contrainte étendue sont les suivantes :

DISABLE NOVALIDATE RELY

Valeurs autres que par défaut pour les propriétés de contrainte

Afin d’assurer la compatibilité avec d’autres bases de données, Snowflake prend en charge la spécification de valeurs autres que les valeurs par défaut pour les propriétés de contrainte. Toutefois, si des valeurs autres que les valeurs par défaut sont spécifiées lors de la création d’une contrainte, celle-ci n’est pas créée.

Notez que Snowflake fournit un paramètre de session, UNSUPPORTED_DDL_ACTION, qui spécifie si la spécification de valeurs autres que les valeurs par défaut lors de la création d’une contrainte génère une erreur.