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

как да използвам ограничението за проверка в oracle

Въведение

Ограничение за проверка на Oracle се използва за налагане на правила за интегритет, базирани на логически изрази, като сравнения. Използваните логически изрази трябва да връщат булева стойност.
Пример
Ограничение ПРОВЕРКА на заплатите на служителите, така че нито една стойност на заплатата да не е по-голяма от 100 000.
Ограничение ПРОВЕРКА за местоположенията на отделите, така че само местоположенията „DELHI“, „PATNA“ и „MUMBAI“ са разрешени.

Как работи ограничението за проверка на Oracle

  1. Определяте ограниченията за проверка на колоната в таблица. Ограниченията за проверка са логически изрази, които се оценяват на булева стойност true или false
  2. Когато редовете се вмъкват или актуализират в таблицата, Oracle проверява логическите изрази.
  3. Ако е оценено на True, Oracle приема данните и ги пренася напред с вмъкване или изтриване.
  4. Ако оценката е фалшива, Oracle отхвърля данните

Важни точки относно ограничението за проверка

а. Ограничението за проверка може да бъде създадено върху колона или група от колони.
б. Една колона може да има едно или повече ограничения за проверка.
c. Редът, в който се оценяват ограниченията, не е дефиниран
d. Никога не използвайте CHECK ограничения, когато някой от другите типове ограничения за целостта може да осигури необходимата проверка.
e. Когато дефинирате множество ограничения, уверете се, че те не са в конфликт помежду си

Проверете ограниченията на ограниченията

(1) Условието трябва да бъде булев израз, който може да бъде оценен с помощта на стойностите в реда, който се вмъква или актуализира.
(2) Условието не може да има
a. подзаявки или последователности.
b. SYSDATE, UID, USER или USERENV SQL функции.
c. псевдоколони LEVEL, PRIOR или ROWNUM.
d. дефинирана от потребителя SQL функция.
(3) Ограничение за проверка не може да препраща към колони в други таблици
(4) Ограничение за проверка не може да бъде създадено в изглед на оракул

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

Ограниченията за проверка на Oracle могат да бъдат създадени с клаузата за създаване на таблица или след като таблицата е била създадена с клауза alter table.
Сега със създаването на таблица, ограниченията за проверка могат да бъдат създадени в синтаксис на колона на линия или извън линия синтаксис.

вграден синтаксис

SQL> CREATE TABLE "EMP"
 ("EMPNO" NUMBER(4,0),
 "ENAME" VARCHAR2(10),
 "JOB" VARCHAR2(9),
 "MGR" NUMBER(4,0),
 "HIREDATE" DATE, 
 "SAL" NUMBER(7,2) check(SAL > 1000),
 "COMM" NUMBER(7,2),
 "DEPTNO" NUMBER(2,0),
  CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
  );

 Table created.

Можем да дадем и персонализирано име на ограничението за проверка

SQL> CREATE TABLE "EMP"
    ("EMPNO" NUMBER(4,0),
     "ENAME" VARCHAR2(10),
     "JOB" VARCHAR2(9),
     "MGR" NUMBER(4,0),
     "HIREDATE" DATE,
     "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000),
     "COMM" NUMBER(7,2),
     "DEPTNO" NUMBER(2,0),
      CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
      );
 
Table created.

синтаксис извън линия

SQL> CREATE TABLE "EMP"
 ("EMPNO" NUMBER(4,0),
 "ENAME" VARCHAR2(10),
 "JOB" VARCHAR2(9),
 "MGR" NUMBER(4,0),
 "HIREDATE" DATE,
 "SAL" NUMBER(7,2) ,
 "COMM" NUMBER(7,2),
 "DEPTNO" NUMBER(2,0),
 CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"),
 check(SAL > 1000)
 );

 Table created.

Можем да дадем и персонализирано име на ограничението за проверка

SQL> CREATE TABLE "EMP"
   ("EMPNO" NUMBER(4,0),
   "ENAME" VARCHAR2(10), 
   "JOB" VARCHAR2(9),  
   "MGR" NUMBER(4,0),
   "HIREDATE" DATE,
   "SAL" NUMBER(7,2) ,
   "COMM" NUMBER(7,2),
   "DEPTNO" NUMBER(2,0),
   CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"),
   constraint CHECK_SAL check(SAL > 1000)
    );
 
Table created.

Когато са включени няколко колони, ние използваме синтаксис само извън линия
Ако използвате вграден синтаксис, той ще изведе грешка

SQL> CREATE TABLE "EMP"
    ("EMPNO" NUMBER(4,0),
    "ENAME" VARCHAR2(10),
    "JOB" VARCHAR2(9),
    "MGR" NUMBER(4,0),
    "HIREDATE" DATE,
    "SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000 and 
     DEPTNO is not null),
    "COMM" NUMBER(7,2),
    "DEPTNO" NUMBER(2,0),
    CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
    );
   
"SAL" NUMBER(7,2) constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null),
                                                                                  *
 ERROR at line 7:
 ORA-02438: Column check constraint cannot reference other columns

 SQL> CREATE TABLE "EMP"
     ("EMPNO" NUMBER(4,0),
      "ENAME" VARCHAR2(10),
      "JOB" VARCHAR2(9),
      "MGR" NUMBER(4,0),
      "HIREDATE" DATE,
      "SAL" NUMBER(7,2) ,
      "COMM" NUMBER(7,2),
      "DEPTNO" NUMBER(2,0),
      CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO"),
      constraint CHECK_SAL check(SAL > 1000 and DEPTNO is not null)
       );
 Table created.

Сега може да се добави ограничение за проверка, след като таблицата е създадена с помощта на синтаксиса на таблицата alter

SQL> CREATE TABLE "EMP"
    ("EMPNO" NUMBER(4,0),
    "ENAME" VARCHAR2(10),
    "JOB" VARCHAR2(9),
    "MGR" NUMBER(4,0),  
    "HIREDATE" DATE,
    "SAL" NUMBER(7,2) ,
    "COMM" NUMBER(7,2),
    "DEPTNO" NUMBER(2,0),  
    CONSTRAINT "PK_EMP" PRIMARY KEY ("EMPNO")
    );
 Table created.

 SQL> alter table "EMP" add constraint  CHECK_SAL 
     check(SAL > 1000 and   DEPTNO is not null);
 Table altered.

Как да намеря ограничението за проверка на таблицата

Следвайки речника, изгледите съдържат информацията за ограничение
ALL_CONSTRAINTS
ALL_CONS_COLUMNS
USER_CONSTRAINTS
USER_CONS_COLUMNS
DBA_CONSTRAINTS
DBA_CONS_COLUMNS

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

Тук C означава ограничение на проверка

Как да активирам/деактивирам ограничението за проверка

SQL> alter table "EMP"  disable constraint CHECK_SAL;
 Table altered.
 SQL> alter table "EMP"  enable  constraint CHECK_SAL;
 Table altered.

Как да премахнете ограничението за проверка

 alter table "EMP"  drop constraint CHECK_SAL;
 Table altered. 

Пример за ограничения за проверка

col1 >= 0 AND col1 < 85857 user_override in ('Y','N') class = 0 OR class = 1 hwm > 0
cm = 0 OR cm = 1
SEQ >= 0
status = 0 OR status = 1

Също чете
alter table add primary key oracle :първичният ключ в oracle идентифицира уникално реда в таблицата. То не може да бъде нулево и може да бъде създадено по време на създаването на таблицата или след създаването на таблицата
ограничение не null в Oracle :ограничението не null в oracle се използва за налагане на ненулеви стойности в колоната в таблицата. Вижте как да добавяте, махнете нулевите ограничения
Уникален ключ в Oracle:Уникалният ключ налага уникалност в колоната в таблицата и ни помага да идентифицираме реда бързо. Oracle създава уникалния индекс за ключа, ако няма наличен индекс
премахване на ограничението на външния ключ oracle:Можем да премахнем ограничението в oracle, използвайки командата alter table. можем да махнем първичен, външен ключ, проверка, не нула и уникално ограничение със същата команда
команда delete в oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm

Препоръчани курсове

Ето хубавия курс на Udemy за Oracle SQL
Oracle-Sql-Step-by-step :Този курс обхваща основния sql, присъединяването, Създаването на таблици и промяната на структурата им, Създаване на изглед, Обединение, Обединение - всичко и много други неща . Страхотен курс и задължителен курс за SQL начинаещи
Пълният курс за сертифициране на Oracle SQL :Това е добър курс за всеки, който иска да бъде готов за работа за SQL разработчици. Приятно обяснен курс
Oracle SQL Developer:Основни неща, съвети и трикове :Инструментът за разработчици на Oracle Sql се използва от много разработчици. Този курс ни дава трикове и уроци как да го използваме ефективно и да станем продуктивен sql разработчик
Мастърклас за настройка на производителността на Oracle 2020 г. :Настройката на производителността е едно от критичните и най-търсените умения. Това е добър курс, за да научите за него и да започнете да правите настройка на производителността на sql


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Наложете ограничение за външен ключ към колони от същата таблица

  2. Връщане на стойността на колоната за идентичност след вмъкване в Oracle

  3. Как да избера всички колони от таблица, плюс допълнителни колони като ROWNUM?

  4. Функция NVL() в Oracle

  5. Стартирайте Oracle Forms като самостоятелен без браузър