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

jak używać ograniczenia sprawdzania w Oracle

Wprowadzenie

Ograniczenie Oracle Check służy do egzekwowania reguł integralności opartych na wyrażeniach logicznych, takich jak porównania. Użyte wyrażenia logiczne powinny zwracać wartość logiczną.
Przykład
Ograniczenie CHECK dotyczące wynagrodzeń pracowników, tak aby żadna wartość wynagrodzenia nie była większa niż 100000.
Ograniczenie CHECK dotyczące lokalizacji działów, tak aby tylko lokalizacje „DELHI”, „PATNA” i „MUMBAI” są dozwolone.

Jak działa ograniczenie sprawdzania wyroczni

  1. Określasz ograniczenia sprawdzające dla kolumny w tabeli. Ograniczenia sprawdzające to wyrażenia logiczne, których wynikiem jest wartość logiczna prawda lub fałsz
  2. Kiedy wiersze są wstawiane lub aktualizowane w tabeli, Oracle sprawdza wyrażenia logiczne.
  3. Jeżeli jest oceniane jako Prawda, Oracle akceptuje dane i przenosi je z wstawianiem lub usuwaniem
  4. Jeśli wynik okaże się fałszywy, Oracle odrzuci dane

Ważne punkty dotyczące ograniczenia sprawdzania

a. Ograniczenie sprawdzające można utworzyć na kolumnie lub grupie kolumn.
Kolumna może mieć jedno lub więcej ograniczeń sprawdzających.
do. Kolejność, w której ograniczenia są oceniane, nie jest zdefiniowana
d. Nigdy nie używaj ograniczeń CHECK, gdy którykolwiek z innych typów ograniczeń integralności może zapewnić niezbędne sprawdzenie. Definiując wiele ograniczeń, upewnij się, że nie kolidują ze sobą

Sprawdź ograniczenia Ograniczenia

(1) Warunek musi być wyrażeniem logicznym, które można obliczyć przy użyciu wartości w wierszu wstawianym lub aktualizowanym.
(2) Warunek nie może mieć
a. podzapytania lub sekwencje.
b. Funkcje SQL SYSDATE, UID, USER lub USERENV.
c. pseudokolumny LEVEL, PRIOR lub ROWNUM.
d. zdefiniowana przez użytkownika funkcja SQL.
(3) Ograniczenie sprawdzające nie może odnosić się do kolumn w innych tabelach
(4) Ograniczenie sprawdzające nie może być utworzone w widoku Oracle

Jak utworzyć ograniczenie sprawdzające w Oracle

Ograniczenia sprawdzające Oracle można utworzyć za pomocą klauzuli create table lub po utworzeniu tabeli za pomocą klauzuli alter table.
Teraz, tworząc tabelę, ograniczenia sprawdzające można tworzyć w składni wbudowanej kolumny lub poza wierszem składnia.

składnia liniowa

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.

Możemy również nadać ograniczeniu sprawdzającemu niestandardową nazwę

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.

niestandardowa składnia

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.

Możemy również nadać ograniczeniu sprawdzającemu niestandardową nazwę

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.

Gdy zaangażowanych jest wiele kolumn, stosujemy tylko składnię nieliniową
Jeśli użyjesz składni wbudowanej, wygeneruje błąd

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.

Teraz można dodać ograniczenie sprawdzające po utworzeniu tabeli przy użyciu składni 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) ,
    "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.

Jak znaleźć ograniczenie sprawdzające na stole

Po słowniku widoki zawierają informacje o ograniczeniu
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';

Tutaj C oznacza ograniczenie sprawdzania

Jak włączyć/wyłączyć ograniczenie sprawdzania

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

Jak usunąć ograniczenie sprawdzające

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

Przykład ograniczeń sprawdzania

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

Też czyta
zmień tabelę dodaj klucz podstawowy oracle :klucz podstawowy w oracle jednoznacznie identyfikuje wiersz w tabeli. Nie może być null i może zostać utworzony w czasie tworzenia tabeli lub po jej utworzeniu
Ograniczenie nie null w Oracle :ograniczenie nie null w Oracle służy do wymuszenia wartości nie null w kolumnie w tabeli. Sprawdź, jak dodawać i usuwać ograniczenia null
Unikalny klucz w Oracle:Unikalny klucz wymusza unikalność w kolumnie w tabeli i pomaga nam szybko zidentyfikować wiersz. Oracle tworzy unikalny indeks dla klucza, jeśli żaden indeks nie jest dostępny
upuść wyrocznię ograniczenia klucza obcego:Możemy usunąć ograniczenie w wyroczni za pomocą polecenia alter table. możemy usunąć klucz podstawowy, obcy, sprawdzić, nie null i ograniczenie unikatowe za pomocą tego samego polecenia
usuń polecenie w oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /klauzule002.htm

Polecane kursy

Oto fajny kurs Udemy dotyczący Oracle SQL
Oracle-Sql-Step-by-step :Ten kurs obejmuje podstawowy SQL, złączenia, tworzenie tabel i modyfikowanie ich struktury, tworzenie widoków, łączenie, łączenie i wiele innych rzeczy . Świetny kurs i obowiązkowy kurs dla początkujących SQL
Pełny kurs certyfikacji Oracle SQL :To dobry kurs dla każdego, kto chce być gotowy do pracy w zakresie umiejętności programistycznych SQL. Fajnie objaśniony kurs
Oracle SQL Developer:Essentials, Tips and Tricks :Narzędzie programistyczne Oracle SQL jest używane przez wielu programistów. Ten kurs zawiera sztuczki i lekcje, jak skutecznie z niego korzystać i zostać produktywnym programistą sql
Oracle SQL Performance Tuning Masterclass 2020 :Dostrajanie wydajności jest jedną z najważniejszych i najbardziej poszukiwanych umiejętności. To dobry kurs, aby się o tym dowiedzieć i zacząć dostrajać wydajność 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. ORA-12154 nie może rozpoznać podanego identyfikatora połączenia

  2. Jak zapisać dane Unicode w Oracle?

  3. Zapytanie, aby znaleźć pełne skany tabeli w Oracle

  4. Jak napisać aplikację .Net, która działa zarówno z SqlServer, jak i Oracle (teraz System.Data.OracleClient jest przestarzały)

  5. Składnia starego łączenia zewnętrznego Oracle — po co umieszczać (+) po prawej stronie znaku równości w lewym sprzężeniu zewnętrznym?