Documente Academic
Documente Profesional
Documente Cultură
PROCEDURI
STOCATE. TRIGGER-I
(DECLANSATORI).
CE REPREZINTĂ TRANZACŢIE
O tranzacţie reprezintă una sau mai multe
instrucţiuni SQL care compun o singură unitate
logica de lucru.
Tranzacţia începe cu prima instructiune SQL
executata si se încheie în momentul în care
efectele tranzacţiei sunt salvate sau sunt
derulate înapoi.
DE CE SE FOLOSESC TRANZACŢII
Tranzactiile dau posibilitatea utilizatorului
serverului SQL, programatorului aplicaţiei şi
administratorului bazei de date să garanteze
coerenţa şi simultaneitatea datelor.
Coerenţa datelor furnizează utilizatorului
o imagine coerenta a datelor, care consta
din date salvate de alţi utilizatori precum
si modificări efectuate de utilizatorul
însusi.
Simultaneitatea (concurenta) datelor
permite utilizatorului sa acceseze date
care sunt utilizate simultan de mulţi alţi
utilizatori.
CE PERMITE?
O tranzacţie îi permite unui programator să
grupeze mai multe operaţii elementare într-un tot
indivizibil, să construiască deci noi operaţii, dar
într-un fel care să nu ne permită să discernem
structura lor interioară (adică faptul că sunt
compuse din mai multe bucăţele).
PROPRIETĂŢI ALE TRANZACŢIILOR
În literatură sunt evidenţiate patru proprietăţi esenţiale,
ale căror iniţiale sunt ACID.
Să reţinem însă că anumite implementări ale tranzacţiilor nu
oferă toate aceste proprietăţi, probabil pentru că domeniul de
utilizare al nu are neapărată nevoie de unele din proprietăţi.
Vom vedea de asemenea că proprietăţile acestea nu sunt
complet independente, şi că anume mecanisme de
implementare pot oferi simultan mai multe proprietăţi; o
oarecare independenţă există între proprietăţi.
ATOMICITATE
Nume Proprietate
Catastrofele nu pot
Atomicitate întrerupe o tranzacţie ``la
mijloc''
Tranzacţiile păstrează
Consistenţă
structurile de date corecte
Programe executate în paralel
Independenţă
nu interferă
Rezultatul unei tranzacţii
Durabilitate
este permanent
OPERAŢIILE EFECTUATE DE O TRANZACŢIE
1. begin: această operaţie marchează începutul execuţiei unei
tranzacţii.
2. read sau write: sunt operaţii de citire sau scriere a
articolelor în baza de date, executate în cadrul unei
tranzacţii.
3. end: această operaţie marchează terminarea operaţiilor de
scriere sau citire din baza de date, ceea ce înseamnă că
tranzacţia se poate termina; totuşi, este posibil să fie
necesare unele operaţii de verificare înainte de validarea
(commit) tranzacţiei.
OPERAŢIILE EFECTUATE DE O TRANZACŢIE
4. commit: această operaţie semnalează terminarea
cu succes a tranzacţiei, validarea tuturor
modificărilor efectuate în baza de date şi
vizibilitatea modificărilor efectuate pentru alte
tranzacţii; din acest moment, modificările efectuate
nu mai pot fi anulate, nici pierdute printr-o
defectare ulterioară a sistemului (bineînţeles, dacă
mecanismul de refacere al SGBD-ului funcţionează
corect).
5. rollback (sau abort): această operaţie semnalează
faptul că tranzacţia a fost abandonată şi că orice
efect pe care tranzacţia l-a avut asupra bazei de
date trebuie să fie anulat (printr-o “rulare înapoi”
a operaţiilor).
SINTAXA
BEGIN TRAN[SACTION] [nume_tranzacţie]
COMMIT [TRAN[SACTION] [nume_tranzacţie]
ROLLBACK [TRAN[SACTION]
[nume_tranzacţie]
EXEMPLU
BEGIN TRAN update_royalty
IF EXISTS (SELECT nume, prenume,
nota
FROM student a, note_exam b
WHERE a.st_id = b.st_id
AND curs_id=10) UPDATE
note_exam SET nota= 8 WHERE nota>5
ELSE ROLLBACK TRAN update_royalty
EXISTĂ DOUĂ FELURI ÎN CARE O TRANZACŢIE
SE POATE TERMINA CU EŞEC:
…………….
[WITH ENCRIPTION]
AS ………..
INSTRUCŢIUNI SQL
RETURN
ELIMINAREA PROCEDURII
Prin folosirea instructiunii
DROP PROCEDURE nume_procedura
se elimină procedură.
• DROP TRIGGER nume_decl
• ALTER TRIGGER nume_decl [{DISABLE |
ENABLE }]
• ALTER TABLE nume_tabel [{DISABLE |
ENABLE } [ALL TRIGGERS]]
ÎNTREBĂRI?