Úvod
Omezení kontroly Oracle se používá k vynucení pravidel integrity založených na logických výrazech, jako jsou porovnávání. Použité logické výrazy by měly vrátit booleovskou hodnotu.
Příklad
Omezení CHECK platů zaměstnanců tak, aby žádná hodnota platu nebyla větší než 100 000.
Omezení CHECK umístění oddělení, takže pouze umístění „DELHI“, „PATNA“ a „MUMBAI“ jsou povoleny.
Jak funguje omezení kontroly Oracle
- Definujete kontrolní omezení pro sloupec v tabulce. Check constraints je logický výraz, který je vyhodnocen jako logická hodnota true nebo false
- Když jsou do tabulky vkládány nebo aktualizovány řádky, Oracle zkontroluje logické výrazy.
- Pokud je vyhodnocena jako True, Oracle data přijme a přenese dále s vložením nebo smazáním
- Pokud se vyhodnotí jako nepravda, Oracle data odmítne
Důležité body týkající se kontrolního omezení
A. Kontrolní omezení lze vytvořit pro sloupec nebo skupinu sloupců.
b. Sloupec může mít jedno nebo více kontrolních omezení.
c. Pořadí, ve kterém jsou vyhodnocena omezení, není definováno
d. Nikdy nepoužívejte omezení CHECK, pokud potřebnou kontrolu může poskytnout jakýkoli jiný typ omezení integrity.
e. Při definování více omezení se ujistěte, že nejsou ve vzájemném konfliktu
Zkontrolujte omezení omezení
(1) Podmínka musí být booleovský výraz, který lze vyhodnotit pomocí hodnot v řádku, který se vkládá nebo aktualizuje.
(2) Podmínka nemůže mít
a. poddotazy nebo sekvence.
b. Funkce SQL SYSDATE, UID, USER nebo USERENV.
c. pseudo sloupce LEVEL, PRIOR nebo ROWNUM.
d. uživatelsky definovaná funkce SQL.
(3) Kontrolní omezení nemůže odkazovat na sloupce v jiných tabulkách
(4) Kontrolní omezení nelze vytvořit v pohledu Oracle
Jak vytvořit kontrolní omezení v oracle
Kontrolní omezení Oracle lze vytvořit pomocí klauzule create table nebo poté, co byla tabulka vytvořena pomocí klauzule alter table.
Nyní při vytváření tabulky lze kontrolní omezení vytvořit v syntaxi řádkového sloupce nebo mimo řádek syntaxe.
inline syntaxe
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.
Kontrolnímu omezení můžeme také dát vlastní název
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.
nesprávná syntaxe
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.
Kontrolnímu omezení můžeme také dát vlastní název
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.
Pokud se jedná o více sloupců, použijeme pouze mimořádkovou syntaxi
Pokud použijete inline syntaxi, vyvolá to chybu
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.
Nyní lze po vytvoření tabulky přidat kontrolní omezení pomocí syntaxe 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 najít kontrolní omezení v tabulce
Podle slovníku obsahují pohledy informace o omezení
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';
Zde C znamená Check constraint
Jak povolit/zakázat kontrolní omezení
SQL> alter table "EMP" disable constraint CHECK_SAL; Table altered. SQL> alter table "EMP" enable constraint CHECK_SAL; Table altered.
Jak zrušit kontrolní omezení
alter table "EMP" drop constraint CHECK_SAL; Table altered.
Příklad kontrolních omezení
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
Také čte
alter table add primary key oracle :primární klíč v oracle jednoznačně identifikuje řádek v tabulce. Nemůže být null a může být vytvořen v době vytvoření tabulky nebo po vytvoření tabulky
not null omezení v Oracle :not null omezení v oracle se používá k vynucení nenulových hodnot ve sloupci v tabulce. Podívejte se, jak přidat, zrušit nulová omezení
Unikátní klíč v Oracle:Jedinečný klíč vynucuje jedinečnost ve sloupci v tabulce a pomáhá nám rychle identifikovat řádek. Oracle vytvoří jedinečný index pro klíč, pokud není k dispozici žádný index
zrušte omezení cizího klíče oracle:Omezení můžeme v oracle zrušit pomocí příkazu alter table. můžeme zrušit primární, cizí klíč, kontrolu, ne null a jedinečné omezení pomocí stejného příkazu
příkaz delete v oracle
https://docs.oracle.com/cd/B19306_01/server.102/b14200 /clauses002.htm
Doporučené kurzy
Zde je pěkný kurz Udemy pro Oracle SQL
Oracle-Sql-Krok za krokem:Tento kurz pokrývá základní sql, spojení, vytváření tabulek a úpravu jejich struktury, vytváření zobrazení, sjednocení, sjednocení – vše a mnoho dalších věcí. . Skvělý kurz a kurz, který musíte mít pro začátečníky SQL
Úplný certifikační kurz Oracle SQL :Toto je dobrý kurz pro každého, kdo chce být Job připravený na vývojářské dovednosti SQL. Pěkně vysvětlený kurz
Oracle SQL Developer:Základy, tipy a triky :Vývojářský nástroj Oracle Sql používá mnoho vývojářů. Tento kurz nám poskytuje triky a lekce, jak jej efektivně používat a stát se produktivním vývojářem sql
Oracle SQL Performance Tuning Masterclass 2020 :Ladění výkonu je jednou z kritických a nejvyhledávanějších dovedností. Toto je dobrý kurz, jak se o tom dozvědět a začít s laděním výkonu SQL