Présentation
Contrainte Oracle Check est utilisé pour appliquer des règles d'intégrité basées sur des expressions logiques, telles que des comparaisons. Les expressions logiques utilisées doivent renvoyer la valeur booléenne.
Exemple
Une contrainte CHECK sur les salaires des employés afin qu'aucune valeur de salaire ne soit supérieure à 100 000.
Une contrainte CHECK sur les emplacements des services afin que seuls les emplacements "DELHI", "PATNA" et "MUMBAI" sont autorisés.
Comment fonctionne la contrainte de vérification Oracle
- Vous définissez les contraintes de vérification sur la colonne d'une table. Les contraintes de vérification sont des expressions logiques qui évaluent la valeur booléenne true ou false
- Lorsque des lignes sont insérées ou mises à jour dans la table, Oracle vérifie les expressions logiques.
- S'il est évalué à True, Oracle accepte les données et les reporte avec insertion ou suppression
- Si le résultat est faux, oracle rejette les données
Points importants sur la contrainte de vérification
un. La contrainte de vérification peut être créée sur une colonne ou un groupe de colonnes.
b. Une colonne peut avoir une ou plusieurs contraintes de vérification.
c. L'ordre dans lequel les contraintes sont évaluées n'est pas défini
d. N'utilisez jamais de contraintes CHECK lorsque l'un des autres types de contraintes d'intégrité peut fournir la vérification nécessaire.
e. Lorsque vous définissez plusieurs contraintes, assurez-vous qu'elles n'entrent pas en conflit les unes avec les autres
Vérifier les contraintes Limitation
(1) La condition doit être une expression booléenne qui peut être évaluée à l'aide des valeurs de la ligne en cours d'insertion ou de mise à jour.
(2) La condition ne peut pas avoir
a. sous-requêtes ou séquences.
b. Fonctions SQL SYSDATE, UID, USER ou USERENV.
c. pseudo-colonnes LEVEL, PRIOR ou ROWNUM.
d. fonction SQL définie par l'utilisateur.
(3) Une contrainte de vérification ne peut pas faire référence à des colonnes dans d'autres tables
(4) Une contrainte de vérification ne peut pas être créée sur une vue oracle
Comment créer la contrainte de vérification dans Oracle
Les contraintes de vérification Oracle peuvent être créées avec la clause create table ou après la création de la table avec la clause alter table.
Désormais, avec la création d'une table, les contraintes de vérification peuvent être créées dans une syntaxe de colonne en ligne ou hors ligne syntaxe.
syntaxe en ligne
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) check(SAL > 1000), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); Table created.
Nous pouvons également attribuer un nom personnalisé à la contrainte de vérification
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); Table created.
syntaxe hors ligne
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), check(SAL > 1000) ); Table created.
Nous pouvons également attribuer un nom personnalisé à la contrainte de vérification
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), constraint CHECK_SAL check(SAL > 1000) ); Table created.
Lorsque plusieurs colonnes sont impliquées, nous n'utilisons que la syntaxe hors ligne
Si vous utilisez la syntaxe en ligne, cela générera une erreur
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null), "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null), * ERROR at line 7: ORA-02438: Column check constraint cannot reference other columns SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"), constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null) ); Table created.
Maintenant, la contrainte de vérification peut être ajoutée après la création de la table à l'aide de la syntaxe alter table
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0), "ENAME" VARCHAR2(10), "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0), CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO") ); Table created. SQL> alter table "EMP" add constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null); Table altered.
Comment trouver la contrainte de vérification sur la table
Suivant le dictionnaire, les vues contiennent les informations sur la contrainte
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
USER_CONSTRAINTS
USER_CONS_COLUMNS
DBA_CONSTRAINTS
DBA_CONS_COLUMNS
SQL> column CONSTRAINT_NAME format a20 SQL> column SEARCH_CONDITION format a50 SQL> SELECT Constraint_name, Search_condition FROM User_constraints WHERE Table_name = 'EMP' AND Constraint_type = 'C';
Ici, C signifie Vérifier la contrainte
Comment activer/désactiver la contrainte de vérification
SQL> alter table "EMP" disable constraint CHECK_SAL; Table altered. SQL> alter table "EMP" enable constraint CHECK_SAL; Table altered.
Comment supprimer la contrainte de vérification
alter table "EMP" drop constraint CHECK_SAL; Table altered.
Exemple de contraintes de vérification
col1 >= 0 AND col1 < 85857 user_override in ('Y','N') class = 0 OR class = 1 hwm > 0 cm = 0 OR cm = 1 SEQ >= 0 status = 0 OR status = 1
Lit également
alter table add primary key oracle :la clé primaire dans oracle identifie de manière unique la ligne dans la table. Il ne peut pas être nul et peut être créé au moment de la création de la table ou après la création de la table
contrainte non nulle dans Oracle :la contrainte non nulle dans oracle est utilisée pour appliquer des valeurs non nulles dans la colonne de la table. Découvrez comment ajouter et supprimer les contraintes nulles
Clé unique dans Oracle :la clé unique applique l'unicité dans la colonne du tableau et nous aide à identifier rapidement la ligne. Oracle crée l'index unique pour la clé si aucun index n'est disponible
supprimer la contrainte de clé étrangère oracle :nous pouvons supprimer la contrainte dans Oracle à l'aide de la commande alter table. nous pouvons supprimer la clé primaire, la clé étrangère, la vérification, la contrainte non nulle et unique avec la même commande
commande de suppression dans oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm
Cours recommandés
Voici le joli cours Udemy pour Oracle SQL
Oracle-Sql-Step-by-step :Ce cours couvre les bases de SQL, les jointures, la création de tables et la modification de sa structure, la création de vues, l'union, l'union -all et bien d'autres choses . Un excellent cours et un cours indispensable pour les débutants SQL
Le cours complet de certification Oracle SQL :C'est un bon cours pour tous ceux qui veulent être prêts à travailler pour les compétences de développeur SQL. Un cours bien expliqué
Oracle SQL Developer :Essentials, Tips and Tricks :l'outil de développement Oracle SQL est utilisé par de nombreux développeurs. Ce cours nous donne des astuces et des leçons sur la façon de l'utiliser efficacement et de devenir un développeur sql productif
Oracle SQL Performance Tuning Masterclass 2020 :l'optimisation des performances est l'une des compétences essentielles et les plus recherchées. C'est un bon cours pour en savoir plus et commencer à ajuster les performances SQL