Qu'est-ce que la contrainte Not Null dans Oracle
Les contraintes non nulles dans oracle sont utilisées pour appliquer des valeurs non nulles dans la colonne de la table. Donc, si vous essayez d'insérer null dans cette colonne, cela générera une erreur.
Comment créer une contrainte non nulle
Les contraintes non nulles sont définies lors de la création de la table ou vous pouvez modifier la table ultérieurement pour qu'une colonne soit modifiée en non nulle. Examinons les exemples.
Création de tableaux
La contrainte non nulle est spécifiée en ligne avec la colonne.
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0) Not Null, "ENAME" VARCHAR2(10) Not null, "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0) ); Table created.
Ici nous avons défini deux contraintes non nulles sur la table emp. Nous pouvons vérifier les contraintes non nulles sur la table à l'aide de la requête ci-dessous
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';
Les contraintes Not Null sont également définies comme des contraintes de vérification et ont des conditions de recherche comme nom de colonne non null
Ajout de la contrainte Not après la création de la table
On peut modifier le tableau pour ajouter la contrainte non nulle
SQL> alter table emp modify ("HIREDATE" not null); Table altered.
Si nous avons des données nulles dans la colonne existante, cette instruction échouera
SQL> SELECT Constraint_name, Search_condition FROM User_constraints WHERE Table_name = 'EMP' AND Constraint_type = 'C'
Nous pouvons également donner le nom personnalisé à la contrainte Not Null. Voici l'exemple pour le démontrer
SQL> CREATE TABLE "EMP" ("EMPNO" NUMBER(4,0) Constraint EMP_NOTNULL Not Null, "ENAME" VARCHAR2(10) Not null, "JOB" VARCHAR2(9), "MGR" NUMBER(4,0), "HIREDATE" DATE, "SAL" NUMBER(7,2) , "COMM" NUMBER(7,2), "DEPTNO" NUMBER(2,0) ); Table created. 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';
SQL> alter table emp modify ("HIREDATE" Constraint H_NOTNULL Not Null); Table altered. SQL> SELECT Constraint_name, Search_condition FROM User_constraints WHERE Table_name = 'EMP' AND Constraint_type = 'C';
Comment supprimer la contrainte Not Null
Nous devons modifier la colonne pour accepter les valeurs nulles
SQL>alter table emp modify "HIREDATE" Null; Table altered. SQL> SELECT Constraint_name, Search_condition FROM User_constraints WHERE Table_name = 'EMP' AND Constraint_type = 'C';
Nous pouvons également supprimer la contrainte non nulle à l'aide de la commande alter table drop Constraint
SQL> alter table emp drop constraint EMP_NOTNULL ; Table altered; SQL> SELECT Constraint_name, Search_condition FROM User_constraints WHERE Table_name = 'EMP' AND Constraint_type = 'C';
Comment ajouter une contrainte non nulle sur la colonne contenant des valeurs nulles
Si vous essayez d'ajouter une contrainte non nulle sur la colonne contenant des valeurs nulles, cette commande échouera car elle validera toutes les lignes toutes les lignes existantes pour la contrainte non nulle. Parfois, nous voulons conserver les valeurs nulles existantes et vérifier pour les lignes futures qu'elles contiennent une valeur non nulle pour cette colonne, puis, dans ce cas, nous pouvons activer la contrainte avec la clause novalidate. Avec cette clause, il ne vérifiera pas les lignes existantes, mais les lignes futures seront vérifiées
alter table emp modify "HIREDATE" not Null novalidate;
Lire aussi
supprimer la clé primaire oracle
Clé étrangère dans oracle
Contrainte de clé unique dans Oracle
comment vérifier toutes les contraintes sur une table dans oracle
oracle modifier la table modifier le type de colonne
https://docs.oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11554