sâmbătă, 12 martie 2011

Constrangeri de integritate 1


Constrangeri de integritate

Constrangeri de integritate
Oracle permite constrangerilor de integritate sa fie definite pentru ta- bele si coloanelor sa
forteze reguli sigure, inauntrul unei tabele sau intre tabele.
Constrangerile sunt folosite:
· de serverul Oracle sa forteze reguli la nivelul tabelei oricand este inserata o linie,
actualizata sau stearsa din acea tabela. Constrangerea trebuie sa fie satisfacuta pentru ca
operatiile sa reuseasca.
· pentru a preveni stergerea unei tabele daca sunt posesiuni din alte tabele.
· prin unelte Oracle, ca Oracle Forms, pentru a furniza reguli pentru utilizarea intr-o
aplicatie.
Constrangerile sunt clasate dupa cum urmeaza:
Constrangeri de tabela
Acestea pot referi una sau mai multe coloane si sunt definite SEPARAT de definitiile
coloanelor din tabela.
Constrangeri de coloana
Acestea refera o singura coloana si sunt definite INAUNTRUL specificatiei pentru coloana
posesoare.
Constrangerile pot fi adaugate unei tabele dupa crearea ei si deasemenea temporar dezactivate
(vezi comanda ALTER TABLE in capitolul urmator).Toate detaliile despre constrangeri sunt
stocate in Dictionarul de Date. Fiecarei constrangeri ii este repartizat un nume. Iti este mai usor
sa suplimentezi una tu singur, astfel ca poate fi mai usor referita mai tarziu, dar daca nu, atunci
un nume este generat automat pe forma:
SYS_Cn
unde n este un numar unic. Cuvantul cheie CONSTRAINT iti permite sa numesti o noua
constrangere tu insuti.
Tipuri de constrangeri
Puteti defini urmatoarele tipuri de constrangeri:
· NULL/NOT NULL
· UNIQUE
· PRIMARY KEY
· FOREIGN KEY(integritatea de referinta)
· CHECK
Constrangerea UNIQUE
Aceasta desemneaza o coloana sau o combinatie de coloane ca o cheie uni- ca.Doua linii in
aceeasi tabela nu pot avea aceeasi valoare pentru aceasta cheie.NULL-urile sunt permise daca
cheia unica este bazata pe o singura co- loana.
Sintaxa constrangerii de tabela :
[CONSTRAINT nume constrangere] UNIQUE (Coloana, Coloana, ...)
Sintaxa constrangerii de coloana :
[CONSTRAINT nume constrangere] UNIQUE
De exemplu, pentru a va asigura ca nu sunt 2 nume de departamente identice la o singura
locatie:
CREATE TABLE DEPT
(DEPTNO NUMBER, DNAME VARCHAR2(9),
LOC VARCHAR2(10),
CONSTRAINT UNQ_DEPT_LOC UNIQUE(DNAME,LOC))
In exemplul de mai sus, constrangerea UNQ_DEPT_LOC este o constrangere de ta- bela.
Notati ca virgula precede detaliile. O constrangere unica il face pe ORACLE sa creeze un
singur index pentru a manui regula. Indecsii sunt discu- tati mai tarziu.