Benefit_triggers și proceduri (server ms sql)

Benefit_triggers și proceduri (server ms sql)

PetrSU, Departamentul de Matematică Aplicată și Cibernetică

2 Conceptul de procedură

Procedura este un program scris în limba internă a DBMS, stocat în baza de date ca obiect independent. Astfel de proceduri sunt denumite de obicei stocate, atașate. Procedurile pot fi solicitate de programul de aplicare. Procedurile sunt executate pe serverul de baze de date. Procedurile pot conține parametri și valori returnate, inclusiv mesaje de eroare.







Avantajele utilizării procedurilor:

- controlul centralizat al accesului la date;

- programele de aplicații pot apela o procedură, care reduce timpul de scriere a programelor, când se modifică procedura, toate programele de apel vor primi cod nou, optimizare cod;

- reduce traficul în rețea într-un „client-server“ sisteme de transmitere numai numele procedurii și parametrii săi în locul schimbului de date, iar procedura se face pe server;

- Ascunderea de la utilizator a mai multor caracteristici ale unui anumit dispozitiv de baze de date, care oferă o mai mare independență a datelor;

- o securitate mai mare a datelor, utilizatorul poate avea dreptul să sune

dar nu gestionează datele care sunt numite prin această procedură; Dezavantaj: lipsa standardelor în implementarea procedurilor.

Rezumatul prelegerilor privind disciplina "Baze de date" (Proceduri și declanșatoare)

Benefit_triggers și proceduri (server ms sql)

PetrSU, Departamentul de Matematică Aplicată și Cibernetică

3 Comenzi pentru lucrul cu proceduri în MS SQL Server

CREAȚI PROCEDURA <имя процедуры>

[@<имя параметра> <тип данных> [IEȘIRE]. ]

[DECLARE @<имя переменной> <тип данных>. ] BEGIN

Numele tuturor variabilelor din MS SQL Server trebuie să înceapă cu un simbol

PROCEDURA DROP <имя процедуры>

Procedura numără numărul de studenți înscriși în facultate, a cărui identificator este parametrul de intrare al procedurii @id și returnează această valoare în parametrul @total_sum.

Creați procedura prStudentsOfFaculty @id int, @total_sum int output AS

Setați @total_sum = 0







Set @total_sum = (Selectați count (*) De la tblStudent, tblGroup Unde (tblStudent.GroupId = tblGroup.GroupId) și (tblGroup.FacultyId = @id)) Sfârșit

Rezumatul prelegerilor privind disciplina "Baze de date" (Proceduri și declanșatoare)

Benefit_triggers și proceduri (server ms sql)

PetrSU, Departamentul de Matematică Aplicată și Cibernetică

4 Conceptul de declanșator

O comandă de declanșare (regulă) este atașată la tabel și este apelată automat de către sistemul de gestionare a bazelor de date atunci când operațiile de actualizare sunt efectuate pe tabel (adăugarea, ștergerea, modificarea intrărilor de tabele).

Caracteristicile implementării declanșatorilor în MS SQL Server

În MS SQL Server:

- declanșatorul poate fi apelat fie după efectuarea operației, fie în locul executării operației;

- declanșatorul se numește o singură dată pentru toate intrările de tabel, asupra cărora trebuie efectuată operația;

- prin urmare, intrările variabile sunt stocate în două tabele care sunt create automat atunci când este apelat declanșatorul:

o Tabel introdus - conține înregistrări modificate sau adăugate ale tabelului;

o Tabelul șters - conține înregistrări înainte de efectuarea modificărilor sau a înregistrărilor șterse din tabel;

- în corpul triggerului definit pentru operația Insert, numai tabelul

- în corpul declanșatorului definit pentru operația Ștergere, numai tabelul

- în corpul declanșatorului definit pentru operația de actualizare, ambele tabele

Inserate și șterse;

- pentru unul și același eveniment poate fi creat de către orice număr de factori declanșatori, acestea sunt numite în mod aleatoriu (eventual în ordinea creării lor).

Rezumatul prelegerilor privind disciplina "Baze de date" (Proceduri și declanșatoare)

PetrSU, Departamentul de Matematică Aplicată și Cibernetică

6 Exemple de implementare a declanșatorilor

Restricționarea domeniului: bursa studentului nu poate fi majorată cu mai mult de 5% față de bursa precedentă.

CREATE TRIGGER tgrStudentGrantUpdate

ON tblStudent AFTER UPDATE

DECLARE @Grant_old float, @Grant_new float, @Id int;

Selectați @Grant_old = Acordați din Ștergere

Selectați @Grant_new = Grant, @Id = StudentId din Inserted

IF (@Grant_new - @Grant_old> 0,05 * @Grant_old)

UPDATE tblStudent SET Grant = 1.05 * @Grant_old

WHERE StudentId = @Id

Triggerul tgrStudentGrantUpdate a fost creat pentru tabela tblStudent. Declanșatorul se va declanșa după efectuarea operației de modificare a datelor.

@Grant_old (tip REAL) pentru a stoca vechi student la bursă, @Grant_new (tip REAL) pentru a stoca noile burse, @Id (tip întreg) pentru a stoca ID-ul de student, trei variabile locale definite în declanșatoare.

Atunci când este apelat declanșatorul, DBMS creează două tabele: Șterse, conținând înregistrările modificate înainte de a fi modificate și inserate conținând intrările modificate după ce au fost modificate.

În corpul trăgaciului, în primul rând, din tabelul șters preia valoarea de burse pentru a face modificări, adică. E. Vechea Bursa, apoi din tabel inserate preia valoarea de burse pentru studenți după efectuarea modificărilor, t. E. O nouă bursă. Împreună cu extragerea unei noi bursă din tabelul inserat, ID-ul studentului este de asemenea recuperat. Identificatorul studentului cu același succes ar putea fi extras din tabelul Deleted.

Mai mult, în corpul declanșatorului, se verifică condiția privind amploarea schimbării bursiere. Dacă bursa sa schimbat cu mai mult de 5%, atunci declanșatorul face o modificare a datelor - crește bursa cu doar 5% în comparație cu valoarea anterioară a burselor elevilor. Această acțiune este efectuată prin apelarea operației Actualizare din tabelul tblStudent pentru studentul corespunzător.

Rezumatul prelegerilor privind disciplina "Baze de date" (Proceduri și declanșatoare)







Articole similare

Trimiteți-le prietenilor: