sql >> Databáze >  >> RDS >> Oracle

Jak vytvořit nenulové omezení v oracle

Co není omezení Null v oracle

Omezení Not Null v oracle se používají k vynucení hodnot, které nejsou null ve sloupci v tabulce. Pokud se tedy pokusíte do tohoto sloupce vložit hodnotu null, vyvolá to chybu.

Jak vytvořit nenulové omezení

Omezení typu Not null jsou definována při vytváření tabulky nebo můžete tabulku později upravit tak, aby byl sloupec změněn na hodnotu Not null. Podívejme se na příklady.

Vytvoření tabulky
Omezení není null je zadáno přímo ve sloupci.

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. 

Zde jsme definovali dvě nenulová omezení na tabulce emp. Omezení Not null v tabulce můžeme zkontrolovat pomocí níže uvedeného dotazu

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';

Omezení Not Null jsou také definována jako kontrolní omezení a mají podmínky vyhledávání jako název sloupce ne null

Přidání bez omezení po vytvoření tabulky

Můžeme upravit tabulku tak, aby přidala podmínku not null

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

Pokud ve sloupci existují nulová data, tento příkaz selže

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

Můžeme také dát vlastní název omezení Not Null. Zde je příklad, který to demonstruje

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';

Jak zrušit omezení Not Null

Musíme upravit sloupec tak, aby přijímal hodnoty null

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';

Omezení not null můžeme zrušit také pomocí příkazu 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';

Jak přidat nenulové omezení do sloupce obsahujícího hodnoty null

Pokud se pokusíte přidat podmínku nenulovou hodnotu do sloupce obsahujícího hodnoty null, pak tento příkaz selže, protože ověří všechny řádky a všechny existující řádky na podmínku není null. Někdy chceme zachovat stávající hodnoty null a zkontrolovat pro budoucí řádky, že pro tento sloupec obsahují nenulovou hodnotu, pak v takovém případě můžeme povolit omezení pomocí klauzule novalidate. Pomocí této klauzule nebude kontrolovat existující řádky, ale budoucí řádky budou zkontrolovány

alter table emp modify "HIREDATE" not Null novalidate;

Přečtěte si také
zrušte primární klíč oracle
Cizí klíč v oracle
Omezení jedinečného klíče v Oracle
jak zkontrolovat všechna omezení v tabulce v oracle
oracle alter table upravit typ sloupce
https://docs.oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11554


  1. Ekvivalent explode() pro práci s řetězci v MySQL

  2. PostgreSQL INSERT ON CONFLICT UPDATE (upsert) použijte všechny vyloučené hodnoty

  3. PostgreSQL - Přidejte klíč ke každému objektu pole JSONB

  4. MySQL Funkce COT() – Vrátí kotangens čísla v MySQL