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
- 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
- Kiedy wiersze są wstawiane lub aktualizowane w tabeli, Oracle sprawdza wyrażenia logiczne.
- Jeżeli jest oceniane jako Prawda, Oracle akceptuje dane i przenosi je z wstawianiem lub usuwaniem
- 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