Oracle
 sql >> база данни >  >> RDS >> Oracle

Как да създадете ненулево ограничение в oracle

Какво не е Null ограничение в oracle

Ограниченията Not Null в oracle се използват за налагане на стойности, които не са нулеви в колоната в таблицата. Така че, ако се опитате да вмъкнете null в тази колона, ще изведе грешка.

Как да създадете ограничение без нула

Ненулевите ограничения се дефинират при създаването на таблицата или можете да промените таблицата по-късно, за да промените колона на Not null. Нека да разгледаме примерите.

Създаване на таблица
Ограничението не null е посочено в колоната.

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. 

Тук сме дефинирали две ненулеви ограничения върху таблицата emp. Можем да проверим ограниченията Not null в таблицата с помощта на заявката по-долу

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 също се дефинират като ограничения за проверка и имат условия за търсене като име на колона, а не null

Добавяне на ограничение Not след създаване на таблица

Можем да модифицираме таблицата, за да добавим ограничението non null

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

Ако имаме нулеви данни в съществуващата колона, тогава този израз ще се провали

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

Можем също да дадем персонализирано име на ограничението Not Null. Ето пример, който да го демонстрира

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

Как да премахнете ограничението Not 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';

Можем да премахнем ограничението not null с помощта на командата 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';

Как да добавите ненулево ограничение към колоната, съдържаща нулеви стойности

Ако се опитате да добавите ограничение non-null към колоната, съдържаща нулеви стойности, тогава тази команда ще се провали, тъй като ще потвърди всички редове, всички съществуващи редове за ненулево ограничение. Понякога искаме да запазим съществуващите нулеви стойности и да проверим за бъдещи редове, че съдържат стойност, която не е нула за тази колона, тогава в този случай можем да активираме ограничението с клауза novalidate. С тази клауза тя няма да проверява съществуващите редове, но бъдещите редове ще бъдат проверявани

alter table emp modify "HIREDATE" not Null novalidate;

Прочетете също
пуснете първичен ключ oracle
Външен ключ в oracle
ограничение на уникален ключ в Oracle
как да проверите всички ограничения на таблица в oracle
oracle променете таблицата, модифицирайте типа на колоната
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. Как да получите века от дата в Oracle

  2. Пакетно вмъкване/актуализация на MyBatis за Oracle

  3. Как да свържете Airflow към базата данни на Oracle

  4. Пейджинг с Oracle и sql сървър и общ метод за пейджинг

  5. oracle SQL плюс как да прекратя командата в SQL файл?