P. 1
Crearea Tabelelor - CURS 3

Crearea Tabelelor - CURS 3

|Views: 159|Likes:
Published by Cosmina B
BAZE DE DATE AVANSATE - SQL SERVER 2008
BAZE DE DATE AVANSATE - SQL SERVER 2008

More info:

Published by: Cosmina B on Feb 02, 2010
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PPT, PDF, TXT or read online from Scribd
See more
See less

07/12/2013

pdf

text

original

SQL Server

► INDEXAREA

TABELELOR ► 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're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->