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