sql >> Databasteknik >  >> RDS >> Oracle

Hur man skapar en noll-begränsning i Oracle

Vad är Not Null-begränsning i Oracle

Not Null-begränsningar i Oracle används för att framtvinga inte null-värden i kolumnen i tabellen. Så om du försöker infoga null i den kolumnen kommer det att skapa ett fel.

Hur man skapar en non null-begränsning

Inte null-begränsningar definieras när tabellen skapas eller så kan du ändra tabellen senare så att en kolumn ändras till Inte null. Låt oss ta en titt på exemplen.

Skapa tabell
Inte noll-begränsning anges i linje med kolumnen.

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. 

Här har vi definierat två icke-null-begränsningar på tabellen emp. Vi kan kontrollera Not null-begränsningarna i tabellen med hjälp av nedanstående fråga

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änsningar definieras också som kontrollbegränsningar och har sökvillkor som kolumnnamn inte null

Lägger till Not-begränsning efter att tabellen har skapats

Vi kan modifiera tabellen för att lägga till begränsningen inte null

SQL> alter table emp modify ("HIREDATE" not null);
 Table altered.

Om vi ​​har nolldata i kolumnen kommer detta uttalande att misslyckas

SQL> SELECT Constraint_name, Search_condition
     FROM User_constraints
     WHERE Table_name = 'EMP'  AND
     Constraint_type = 'C'

Vi kan också ge det anpassade namnet till Not Null-begränsningen. Här är exemplet för att visa 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';

Hur man släpper begränsningen Not Null

Vi måste ändra kolumnen för att acceptera nollvärden

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 även släppa noll-begränsningen med kommandot 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';

Hur man lägger till non null-begränsning i kolumnen som innehåller nollvärden

Om du försöker lägga till en icke-null-begränsning i kolumnen som innehåller null-värden, kommer det kommandot att misslyckas eftersom det kommer att validera alla rader och alla befintliga rader för icke-null-begränsning. Ibland vill vi behålla de befintliga null-värdena och kontrollera för framtida rader att de innehåller ett icke-null-värde för denna kolumn, då kan vi i så fall aktivera restriktionen med novalidate-satsen. Med denna klausul kommer den inte att kontrollera de befintliga raderna, men framtida rader kommer att kontrolleras

alter table emp modify "HIREDATE" not Null novalidate;

Läs även
släpp primärnyckel oracle
Främmande nyckel i oracle
Unik nyckelbegränsning i Oracle
hur man kontrollerar alla begränsningar på en tabell i oracle
oracle ändra tabell ändra kolumntyp
https://docs.oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11554


  1. opatch prereq

  2. java.lang.ClassNotFoundException:org.postgresql.Driver, Android

  3. Exportera tabell från databas till csv-fil

  4. Generated Value i Postgres