Triggers vs. Cursors
Într-o bază de date, un declanșator este o procedură (segment de cod) care este executată automat atunci când anumite evenimente apar într-un tabel / vizualizare. Printre alte utilizări, declanșatoarele sunt utilizate în principal pentru menținerea integrității într-o bază de date. Un cursor este o structură de control utilizată în bazele de date pentru a trece prin înregistrările bazei de date. Este foarte similar cu iteratorul furnizat de multe limbi de programare.
Ce sunt declanșatoarele?
Un declanșator este o procedură (segment de cod) care este executată automat când anumite evenimente specifice apar într-un tabel / vizualizare a unei baze de date. Printre alte utilizări, declanșatoarele sunt utilizate în principal pentru menținerea integrității într-o bază de date. Declanșatoarele sunt utilizate și pentru aplicarea regulilor de afaceri, modificarea auditului în baza de date și replicarea datelor. Cele mai frecvente declanșatoare sunt declanșatoarele limbajului de manipulare a datelor (DML) care sunt declanșate atunci când datele sunt manipulate. Unele sisteme de baze de date suportă declanșatoare non-date, care sunt declanșate atunci când apar evenimente DDL (Data Definition Language). Câteva exemple sunt factorii declanșatori care sunt concediați atunci când sunt create tabele, în timpul operațiilor de comitere sau revocare etc. Aceste declanșatoare pot fi folosite în mod special pentru audit. Sistemul de baze de date Oracle acceptă declanșatoarele de nivel ale schemei (de exemplu declanșatoarele declanșate când schemele de bază de date sunt modificate), cum ar fi După creare, Înainte de Alter, După Alter, Înainte de Drop, După Drop, etc. Cele patru tipuri principale de declanșatoare suportate de Oracle sunt declanșatoarele de nivel Row, Coloanele declanșează nivelul, declanșează fiecare tip de rând și declanșează pentru fiecare tip de declarație.
Ce sunt Cursorii?
Un cursor este o structură de control utilizată în bazele de date pentru a trece prin înregistrările bazei de date. Este foarte similar cu iteratorul furnizat de multe limbi de programare. În plus față de traversarea prin înregistrări într-o bază de date, cursoarele facilitează de asemenea recuperarea datelor, adăugarea și ștergerea înregistrărilor. Prin definirea modului corect, cursoarele pot fi de asemenea folosite pentru a traversa înapoi. Atunci când o interogare SQL returnează un set de rânduri, acestea sunt de fapt procesate utilizând cursoare. Un cursor trebuie să fie declarat și să i se atribuie un nume, înainte ca acesta să poată fi utilizat. Apoi, cursorul trebuie să fie deschis utilizând comanda OPEN. Această operație ar plasa cursorul chiar înainte de primul rând al setului de rezultate al înregistrărilor. Apoi, cursorul trebuie să efectueze operația FETCH pentru a obține într-adevăr un rând de date în aplicație. În cele din urmă, cursorul trebuie să fie închis utilizând operația ÎNCHIS. Cursoarele închise pot fi deschise din nou.
Care este diferența dintre declanșatoarele și cursoarele?
Un declanșator este o procedură (segment de cod) care este executată automat atunci când anumite evenimente apar într-un tabel / vizualizare a unei baze de date, în timp ce un cursor este o structură de control utilizată în bazele de date pentru a trece prin înregistrările bazei de date. Un cursor poate fi declarat și utilizat într-un declanșator. Într-o astfel de situație, declarația de declarare ar fi în interiorul declanșatorului. Apoi domeniul de aplicare al cursorului ar fi limitat la acel declanșator. Într-un declanșator, dacă un cursor este declarat pe un tabel introdus sau șters, un astfel de cursor nu ar fi accesibil printr-un declanșator imbricat. Odată ce un declanșator este finalizat, toate cursoarele create în declanșator vor fi alocate.