Oracle
 sql >> Base de données >  >> RDS >> Oracle

comment utiliser la contrainte de vérification dans oracle

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

  1. 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
  2. Lorsque des lignes sont insérées ou mises à jour dans la table, Oracle vérifie les expressions logiques.
  3. S'il est évalué à True, Oracle accepte les données et les reporte avec insertion ou suppression
  4. 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