Définition d'une CONTRAINTE
Les paramètres correspondent à :
- [not] null : indique une contrainte de type NOT NULL.
- unique : indique une contrainte de type unique.
- primary key : indique la déclaration d'une PRIMARY KEY.
- reference : indique une contrainte de type FOREIGN KEY, il faut
alors indiquer le nom de la colonne qui est utilisée comme PRIMARY
KEY. ON DELETE CASCADE fait référence à la façon dont la
table va évoluer lors de la suppression de clés de type foreign
key.
- check : indique une contrainte de type CHECK (domaine de variation
des valeurs prises par la donnée).
- using index : permet d'indiquer explicitement la place de l'index.
Ainsi, il est possible de fournir les paramètres concernant le
tablespace de stockage et les paramètres de gestion de la table
contenant cet index (nous retrouvons tous les paramètres de stockage
déjà expliqués pour l'ordre de création d'une
table).
- deferrable : la contrainte n'est pas validée au moment de
l'insertion mais lors du commit.
- exception into : indique le nom de la table qui contiendra les
lignes ne satisfaisant pas la contrainte (se référer à la
suite du chapitre lors de la création et la gestion de cette table).
Cette option est utile lors d'une saisie en masse d'informations. Pour
simplifier cette saisie (via des outils de type import/export ou SQL*LOADER),
l'administrateur peut demander la dévalidation momentanée de la
contrainte. Lorsque cette dernière est re-validée, les
informations non conformes sont stockées dans cette table.
- disable : indique que la contrainte n'est pas validée pour
le moment. Nous allons faire une saisie de masse d'informations.
Le dictionnaire et les contraintes
Les vues du dictionnaire mises en oeuvre pour les contraintes sont :
- pour les tables
- USER_CONSTRAINTS, cette table référence la liste des
contraintes pour un utilisateur donné,
- ALL_CONSTRAINTS, cette table référence la liste des
contraintes visibles pour tous les utilisateurs,
- DBA_CONSTRAINTS cette table référence la liste des
contraintes pour tous les utilisateurs (tables système
comprises).
- pour les colonnes
- USER_CONS_COLUMNS, cette table référence la liste des
colonnes soumises à contrainte pour un utilisateur
donné,
- ALL_CONS_COLUMNS, cette table référence la liste des
colonnes visibles soumises à contrainte pour tous les
utilisateurs,
- DBA_CONS_COLUMNS, cette table référence la liste des
colonnes soumises à contrainte pour tous les utilisateurs (tables
système comprises).
Tableau récapitulatif des contraintes