FirebirdSQL logo

Restrictions

Il existe quatre types de restrictions :

  • clé primaire (PRIMARY KEY) ;

  • Une clé unique (UNIQUE) ;

  • clé étrangère (REFERENCES ou FOREIGN KEY) ;

  • vérifier la contrainte (CHECK).

Les contraintes peuvent être spécifiées au niveau de la colonne ("`Column Constraints'") ou au niveau de la table ("`Table Constraints'").Les contraintes au niveau de la table sont nécessaires lorsque les clés (contrainte d’unicité, clé primaire ou clé étrangère) doivent être générées à travers plusieurs colonnes ou lorsqu’une contrainte CHECK implique plusieurs colonnes, c’est-à-direfonctionne à un niveau record.La syntaxe de certains types de contraintes peut varier légèrement selon que la contrainte est définie au niveau de la colonne ou de la table.

  • Une contrainte de niveau colonne est spécifiée après que les autres caractéristiques de la colonne aient été définies. Elle ne peut inclure que la colonne spécifiée dans cette définition.

  • Les contraintes au niveau de la table sont spécifiées après toutes les définitions de colonnes. Les contraintes au niveau de la table sont un moyen plus polyvalent d’écrire des contraintes car elles permettent d’appliquer une contrainte à plus d’une colonne de la table.

  • Vous pouvez mélanger les contraintes de colonne et de table dans une seule instruction CREATE TABLE.

Un index est automatiquement créé par le système pour la clé primaire (PRIMARY KEY), la clé unique (UNIQUE KEY) et la clé étrangère (REFERENCES pour les restrictions au niveau des colonnes, et FOREIGN KEY REFERENCES pour les restrictions au niveau des tables).

Noms des contraintes et de leurs indices

Si un nom de contrainte n’est pas spécifié, il sera automatiquement généré par le système.

Les contraintes de niveau colonne et leurs indices sont automatiquement nommés comme suit :

  • Les noms des contraintes sont de la forme INTEG_<n>n est représenté par un ou plusieurs nombres ;

  • Les noms d’index ont la forme RDB$PRIMARY<n> (pour un index de clé primaire), RDB$FOREIGN<n> (pour un index de clé étrangère) ou RDB$<n> (pour un index de clé unique), où n est représenté par un ou plusieurs chiffres ;

Les schémas de dénomination automatique pour les contraintes de niveau table et leurs index sont les mêmes.

Contraintes nommées

Le nom de la contrainte peut être défini explicitement en le spécifiant dans la clause optionnelle CONSTRAINT.Par défaut, le nom de l’index de la contrainte sera le même que celui de la contrainte elle-même.Si un nom différent est requis pour l’index, il peut être spécifié dans la clause USING.

Contraintes USING

La condition USING permet un nom défini par l’utilisateur pour l’index généré automatiquement pour la contrainte, et définit optionnellement si l’index sera en ordre ascendant (par défaut) ou descendant.