sql >> Database teknologi >  >> RDS >> Oracle

Sådan opretter du ikke null-begrænsning i oracle

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


  1. Mine foretrukne PostgreSQL-forespørgsler og hvorfor de betyder noget

  2. hvordan man overfører variabel fra shell-script til sqlplus

  3. SQL UPDATE Syntaks – Listet af DBMS

  4. Nye og udviklende PostgreSQL Enterprise-funktioner med seneste udgivelser