Cours SQL ORACLE – 12 : CONSTRAINT CHECK
CONSTRAINT est une contrainte appliquée à une ou plusieurs colonnes d’une table pour vérifier l’intégrité des données.
Les CONSTRAINT sont définit à la création de la table ou après la création en utilisant la requête ALTER TABLE.
Trois type de CONSTRAINT existent. Dans ce cours, nous allons voir les CONSTRAINT CHECK.
Les CONSTRAINT CHECK sont appliquées sur une colonne d’une table pour vérifier une condition de validation. On peut avoir par exemple une CONSTRAINT CHECK (
- Exemple 1 :
Nous voulons créer une table AMIS qui stockera les noms de personne, leurs genres et leurs âges :
CREATE TABLE AMIS (
NOM VARCHAR2(50),
GENRE VARCHAR2(1),
AGE NUMBER,
CONSTRAINT CK_AMIS$GENRE CHECK(GENRE IN ('F','M'))
) ;
Nous allons essayer maintenant d’insérer une ligne dans la table AMIS avec un GENRE diffèrent de F ou M :
INSERT INTO AMIS (NOM, GENRE, AGE) VALUES ('NOM 1', 'A', 15) ;
Cette requête retournera l’erreur ci-dessous :
Erreur commençant à la ligne: 1 de la commande -
INSERT INTO AMIS (NOM, GENRE, AGE) VALUES ('NOM 1', 'A', 15)
Rapport d'erreur -
ORA-02290: violation de contraintes (TEST.CK_AMIS$GENRE) de vérification
Il va falloir donc changer le GENRE de ‘A’ à ‘M’ ou ‘F’ pour que l’insertion soit effective:
INSERT INTO AMIS (NOM, GENRE, AGE) VALUES ('NOM 1', 'F', 15);
1 ligne inséré.
- Exemple 2 :
Dans cet exemple nous allons modifier la table AMIS pour ajouter une CONSTRAINT CHECK sur la colonne AGE de tel sorte à avoir un âge entre 0 et 120 ans.
Dans ce cas-là, la requête sera comme suit:
ALTER TABLE AMIS ADD CONSTRAINT CK_AGE_0_120 CHECK (AGE >=0 AND AGE <= 120);
Table AMIS modifié(e).
Nous allons faire la même manipulation de l’exercice en saisissant un âge supérieur à 120 ans:
INSERT INTO AMIS (NOM, GENRE, AGE) VALUES ('NOM 2', 'M', 150);
Et comme l’exemple 1 nous aurons l’erreur :
Erreur commençant à la ligne: 1 de la commande -
INSERT INTO AMIS (NOM, GENRE, AGE) VALUES ('NOM 2', 'M', 150)
Rapport d'erreur -
ORA-02290: violation de contraintes (TEST.CK_AGE_0_120) de vérification