You are on page 1of 15

SQL Server

► INDEXAREATABELELOR
► IMPLEMENTAREA RESTRICŢIILOR
Indexarea tabelelor
► Rolul indexării
► Avantaje
► Tipuri de indecşi
 Cluster
 Non cluster
 Full Text
 XML
► Modalitati de implementare
Fereastra Indexes/Keys este disponibilă prin intermediul
meniului Table Designer
Implementarea restricţiilor
asupra datelor

► Restricţii la nivelul tabelelor


► Restricţii privind integritatea referenţială
► Declanşatori (proceduri de tip Trigger)
Restricţii la nivelul tabelelor

CHECK CONSTRAINTS
Fereastra “check constraints”
Restricţii privind integritatea referenţială

In fereastra de proprietati ale relatiei


se pot configura restrictiile de integritate
Declansatori (proceduri Trigger)
► Un declansator este un tip special de procedura care se
executa atunci cand in baza de date survine o instructiune de
modificare, stegere sau adaugare (UPDATE, DELETE,
INSERT).
► Declanşatori sunt executaţi după o instrucţiune de
actualizare, o singura dată, indiferent de numărul de
înregistrări afectate de respectiva instrucţiune in cadrul
tabelei.
► Restricţiile de integritate referenţială au prioritate in fata
declanşatorilor. Daca o operaţie de actualizare are ca rezultat
incalcarea integritatatii referenţiale se anulează execuţia
declanşatorilor.
Sintaxe simplificate pentru comenzile
Update, Delete si Insert
► Sintaxele simplificata pentru instructiunile UPDATE, DELETE si INSERT sunt
urmatoarele:

► UPDATE nume_tabel
SET camp=expresie
WHERE coondie1 AND/OR conditie2 AND/OR ….. conditie N

► DELETE FROM nume_tabel


WHERE coondie1 AND/OR conditie2 AND/OR ….. conditie N

► INSERT INTO nume_tabel (camp1, camp2, …. , camp N)


SELECT camp1, camp2…., camp N FROM sursa_de_date
WHERE conditii…
ELEMENTE DE BAZA IN REALIZAREA
DECLANSATORILOR
I. Conceptul de tranzactie
O tranzacţie reprezintă un set de operaţii de actualizare care fie se execută toate,
fie nici una. Operaţiile cuprinse într-o tranzacţie nu pot fi executate parţial: dacă
una dintre ele eşuează atunci toate celelalte sunt anulate

Execuţia unei operaţii de modificare/adăugare/ştergere si a procedurii trigger pe


care o declanşează pot fi considerate o singura tranzacţie.

II. Functii si instructiuni utile


(@@rowcount, update(), rollback transaction)

III. Tabele temporare (DELETED, INSERTED)


Sintaxa
CREATE TRIGGER nume_trigger ON nume_tabel
{FOR|AFTER|INSTEAD OF}
{INSERT/UPDATE/DELETE }
AS….. Instructiuni SQL….

Pentru modificare se utilizeaza ALTER TRIGGER, iar pentru


stergere DROP TRIGGER
Exemplul I
CREATE TRIGGER Stergere_angajat ON ANGAJATI FOR DELETE AS
IF @@rowcount=0 RETURN
IF EXISTS (SELECT CodDepartament FROM deleted
WHERE coddepartament=1)
BEGIN
RAISERROR ( 'NU SE POT STERGE DIN DEPARTAMENTUL 1', 18, 1)
ROLLBACK TRANSACTION
END
Exemplul II
CREATE TRIGGER MODIFICARE_SAL ON ANGAJATI FOR UPDATE AS

IF EXISTS(SELECT *
FROM DELETED, INSERTED
WHERE DELETED.CodAngajat=INSERTED.CodAngajat
AND DELETED.SALARIU>INSERTED.SALARIU)
BEGIN
RAISERROR('NU SE POATE SUB MINIM', 18,2)
ROLLBACK TRANSACTION
END
Exemplul III
CREATE TRIGGER Arhivare on Angajati FOR DELETE AS
BEGIN
INSERT INTO Arhiva_Angajati(coda, nume, DataPlecare)
SELECT CodAngajat, Nume, getdate()as DataPlecare FROM DELETED
END
Declanşatorii creaţi pot fi vizualizaţi in baza de date in secţiunea Triggers
a tabelului pentru care au fost creaţi:

You might also like