CONSTRAINT

 

Specifikace integritních omezení


Integritní omezení je možné vytvářet:
1. uvnitř (column constraints)
2. vně specifikace sloupce (table constraints)

Ve většině případů je možné použít kteroukoli možnost. Existují dvě výjimky NOT NULL je nutno definovat jako "column constraints" a pokud IO obsahuje více než jeden sloupec definuje se jako "table constraints". Ve výše uvedeném příkladu byly při vytváření tabulky EXEMPLAR integritní omezení definované jako "column constraints" tj. uvnitř specifikace sloupce. Pokud by se stejná integritní omezení definovaly formou "table constraints" příkaz CREATE TABLE by vypadal následovně:
CREATE TABLE exemplar
       (id NUMBER(6,0),
        isbn VARCHAR2(16),
        dat_nakupu DATE DEFAULT SYSDATE,
        vypujceno CHAR(1),
PRIMARY KEY (id),
FOREIGN KEY(isbn) REFERENCES kniha,
CHECK (vypujceno IN ('A','N')));

Chceme-li definovat unikátní klíč např. na spojení sloupců ID a ISBN, musíme toto integritní omezení definovat také jako “table constraints” protože zahrnuje dva sloupce.(Definici nelze přímo přiřadit ke sloupci).
...
   UNIQUE (isbn,id)
...


Pojmenování integritních omezení


Ke zvýšení přehlednosti integritních omezení je možno využít možnosti integritní omezení pojmenovat. Příkaz pro vytvoření tabulky EXEMPLAR by pak mohl vypadat následovně:
CREATE TABLE exemplar
       (id NUMBER(6,0) CONSTRAINT exemplar_klic PRIMARY KEY,
        isbn VARCHAR2(16),
        dat_nakupu DATE DEFAULT SYSDATE,
        vypujceno CHAR(1),
CONSTRAINT exemplar_ref_kniha FOREIGN KEY(isbn) REFERENCES kniha,
CONSTRAINT exemplar_vycet_vypujceno CHECK (vypujceno IN ('A','N')));

Zjištění názvů integritních omezení
Názvy různých integritních omezení můžeme zjistit pomocí dotazu na pohled USER_CONSTRAINTS systémového katalogu. Struktura tohoto pohledu je:

SQL> DESCRIBE user_constraints
Name                            Null?    Type
------------------------------- -------- ----
OWNER                           NOT NULL VARCHAR2(30)
CONSTRAINT_NAME                 NOT NULL VARCHAR2(30)
CONSTRAINT_TYPE                          VARCHAR2(1)
TABLE_NAME                      NOT NULL VARCHAR2(30)
SEARCH_CONDITION                         LONG
R_OWNER                                  VARCHAR2(30)
R_CONSTRAINT_NAME                        VARCHAR2(30)
DELETE_RULE                              VARCHAR2(9)
STATUS                                   VARCHAR2(8)


SELECT  constraint_name, constraint_type, search_condition
FROM user_constraints
WHERE table_name = 'KNIHA';

CONSTRAINT_NAME         C
------------------------------ -
SEARCH_CONDITION
--------------------------------------------------------------------------------
SYS_C003721                    C
AUTOR IS NOT NULL

SYS_C003722                    P


SYS_C003723                    U

Vysvětlivky ke sloupci CONSTRAINT_TYPE (v záhlaví zobrazen jako “C”):
1. P PRIMARY KEY
2. U UNIQUE
3. C CHECK
NOT NULL
Rozlišení zda se jedná o CHECK nebo NOT NULL je ve sloupci SEARCH_CONDITION)



zdroj: http://www.cs.vsb.cz/ticha/oracle/hlavni3.html 



vytlačiť článok  hľadať súvisiace články 
Vyhľadávanie na stránke
Reklama
Náhodný obrázok
náhodný obrázok
Kontakty

Martin Kasman, M Software
Smreková 3095/23
Email: martin@kasman.sk

Telefón: 0908 270 294