Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Jak utworzyć nie zerowe ograniczenie w Oracle?

Co to jest ograniczenie niezerowe w Oracle

Ograniczenia Not Null w Oracle są używane do wymuszania wartości niezerowych w kolumnie w tabeli. Więc jeśli spróbujesz wstawić null do tej kolumny, zwróci błąd.

Jak utworzyć ograniczenie niezerowe

Ograniczenia niepuste są definiowane podczas tworzenia tabeli lub można później zmodyfikować tabelę, aby zmienić kolumnę na Nie zerową. Rzućmy okiem na przykłady.

Tworzenie tabeli
Nie określono ograniczenia null w kolumnie.

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. 

Tutaj zdefiniowaliśmy dwa niezerowe ograniczenia na stole emp. Możemy sprawdzić ograniczenia Not null w tabeli za pomocą poniższego zapytania

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

Ograniczenia niezerowe są również definiowane jako ograniczenia sprawdzające i mają warunki wyszukiwania jako nazwę kolumny nie zerową

Dodawanie Nieograniczenia po utworzeniu tabeli

Możemy zmodyfikować tabelę, aby dodać ograniczenie „not null”

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

Jeśli mamy puste dane w istniejącej kolumnie, to stwierdzenie nie powiedzie się

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

Możemy również nadać niestandardową nazwę ograniczeniu Not Null. Oto przykład, aby to zademonstrować

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 usunąć ograniczenie Not Null

Musimy zmodyfikować kolumnę, aby zaakceptować wartości puste

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

Możemy usunąć ograniczenie nie zerowe za pomocą polecenia zmiany ograniczenia upuszczania tabeli

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 dodać ograniczenie braku wartości null do kolumny zawierającej wartości null

Jeśli spróbujesz dodać ograniczenie o wartości null do kolumny zawierającej wartości null, to polecenie zakończy się niepowodzeniem, ponieważ sprawdzi poprawność wszystkich wierszy we wszystkich istniejących wierszach pod kątem ograniczenia o wartości null. Czasami chcemy zachować istniejące wartości null i sprawdzić, czy w przyszłych wierszach nie zawierają wartości null dla tej kolumny, wtedy możemy włączyć ograniczenie za pomocą klauzuli novalidate. Dzięki tej klauzuli nie będzie sprawdzać istniejących wierszy, ale przyszłe wiersze zostaną sprawdzone

alter table emp modify "HIREDATE" not Null novalidate;

Czytaj także
upuść klucz podstawowy oracle
Klucz obcy w oracle
Ograniczenie Unikalny klucz w Oracle
jak sprawdzić wszystkie ograniczenia na tabeli w oracle
Oracle zmień typ kolumny zmień tabelę
https://docs.oracle.com/cd/B28359_01/server.111/b28310/general005.htm#ADMIN11554


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie nazw usług Oracle z SQLAlchemy

  2. Nazwy kolumn cytowania Oracle DB

  3. Czy jest jakaś funkcja skrótu w PL/SQL?

  4. Jak sprawić, by moja aplikacja Java identyfikowała się w Oracle podczas połączenia?

  5. ORACLE Connect by równoważna klauzula w SQL Server