Hvad er Not Null-begrænsning i Oracle
Not Null-begrænsninger i oracle bruges til at håndhæve ikke-null-værdier i kolonnen i tabellen. Så hvis du forsøger at indsætte null i den kolonne, vil det give en fejl.
Sådan opretter man ikke null-begrænsning
Ikke null-begrænsninger er defineret ved tabeloprettelse, eller du kan ændre tabellen senere for at få en kolonne ændret til Ikke null. Lad os tage et kig på eksemplerne.
Tabeloprettelse
Ikke null-begrænsning er angivet inline med kolonnen.
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.
Her har vi defineret to ikke null-begrænsninger på tabellen emp. Vi kan kontrollere Ikke null-begrænsningerne i tabellen ved at bruge nedenstående forespørgsel
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';
Not Null-begrænsninger er også defineret som check-begrænsninger og har søgebetingelser som kolonnenavn ikke null
Tilføjelse af ikke-begrænsning efter tabeloprettelse
Vi kan ændre tabellen for at tilføje ikke null-begrænsningen
SQL> alter table emp modify ("HIREDATE" not null); Table altered.
Hvis vi har nul-data i kolonnen, vil denne erklæring mislykkes
SQL> SELECT Constraint_name, Search_condition FROM User_constraints WHERE Table_name = 'EMP' AND Constraint_type = 'C'
Vi kan også give det brugerdefinerede navn til Not Null-begrænsningen. Her er eksemplet for at demonstrere det
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';
Sådan dropper du Not Null-begrænsningen
Vi er nødt til at ændre kolonnen for at acceptere null-værdier
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';
Vi kan også slette ikke null-begrænsningen ved at bruge kommandoen 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';
Sådan tilføjes ikke null-begrænsning på kolonnen, der indeholder null-værdier
Hvis du forsøger at tilføje en ikke-null-begrænsning på kolonnen, der indeholder null-værdier, vil den kommando mislykkes, da den vil validere alle rækkerne, alle de eksisterende rækker, for ikke-null-begrænsninger. Nogle gange ønsker vi at beholde de eksisterende null-værdier og kontrollere for fremtidige rækker, at de indeholder en ikke-null-værdi for denne kolonne, så i så fald kan vi aktivere begrænsningen med novalidate-sætning. Med denne klausul vil den ikke kontrollere de eksisterende rækker, men fremtidige rækker vil blive kontrolleret
alter table emp modify "HIREDATE" not Null novalidate;
Læs også
slip primærnøgle oracle
Udenlandsk nøgle i oracle
Unik nøglebegrænsning i Oracle
hvordan man kontrollerer alle begrænsninger på en tabel i oracle
oracle ændre tabel modificere kolonnetype
https://docs.oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11554