Triggers vs Cursore
Într-o bază de date, un declanșator este o procedură (segment de cod) care este executată automat atunci când apar anumite evenimente într-un tabel/vizualizare. Printre celel alte utilizări ale sale, declanșatorii sunt utilizați î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 parcurge înregistrările bazei de date. Este foarte asemănător cu iteratorul oferit de multe limbaje de programare.
Ce sunt declanșatoarele?
Un declanșator este o procedură (segment de cod) care este executată automat atunci când apar anumite evenimente într-un tabel/vizualizare a unei baze de date. Printre celel alte utilizări ale sale, declanșatorii sunt utilizați în principal pentru menținerea integrității într-o bază de date. Declanșatorii sunt, de asemenea, utilizați pentru aplicarea regulilor de afaceri, auditarea modificărilor din baza de date și replicarea datelor. Cele mai comune declanșatoare sunt declanșatoarele DML (Data Manipulation Language) care sunt declanșate atunci când datele sunt manipulate. Unele sisteme de baze de date acceptă declanșatoare non-date, care sunt declanșate atunci când apar evenimente Data Definition Language (DDL). Câteva exemple sunt declanșatoarele care sunt declanșate atunci când sunt create tabelele, în timpul operațiunilor de commit sau rollback, etc. Acești declanșatori pot fi folosiți în special pentru auditare. Sistemul de baze de date Oracle acceptă declanșatoare la nivel de schemă (adică declanșatoare declanșate atunci când schemele bazei de date sunt modificate) precum After Creation, Before Alter, After Alter, Before Drop, After Drop etc. Cele patru tipuri principale de declanșatoare acceptate de Oracle sunt declanșatoare la nivel de rând, Declanșează la nivel de coloană, declanșează fiecare tip de rând și declanșează pentru fiecare tip de instrucțiune.
Ce sunt cursorele?
Un cursor este o structură de control folosită în bazele de date pentru a parcurge înregistrările bazei de date. Este foarte asemănător cu iteratorul oferit de multe limbaje de programare. Pe lângă parcurgerea înregistrărilor dintr-o bază de date, cursoarele facilitează și recuperarea datelor, adăugarea și ștergerea înregistrărilor. Prin definirea modului corect, cursoarele pot fi folosite și pentru a deplasa înapoi. Când o interogare SQL returnează un set de rânduri, acestea sunt de fapt procesate folosind cursoare. Un cursor trebuie să fie declarat și atribuit un nume, înainte de a putea fi folosit. Apoi, cursorul trebuie deschis folosind comanda OPEN. Această operație ar plasa cursorul chiar înaintea primului rând al setului de rezultate de înregistrări. Apoi cursorul trebuie să efectueze operația FETCH pentru a obține efectiv un rând de date în aplicație. În cele din urmă, cursorul trebuie să fie închis utilizând operația CLOSE. Cursoarele închise pot fi deschise din nou.
Care este diferența dintre declanșatoare și cursore?
Un declanșator este o procedură (segment de cod) care se execută automat atunci când apar anumite evenimente într-un tabel/vizualizare a unei baze de date, în timp ce un cursor este o structură de control folosită în bazele de date pentru a parcurge înregistrările bazei de date. Un cursor poate fi declarat și utilizat într-un declanșator. Într-o astfel de situație, declarația declare ar fi în interiorul declanșatorului. Atunci domeniul de aplicare al cursorului ar fi limitat la acel declanșator. În cadrul unui declanșator, dacă un cursor este declarat pe un tabel inserat sau șters, un astfel de cursor nu ar fi accesibil dintr-un declanșator imbricat. Odată ce un declanșator este finalizat, toate cursoarele create în cadrul declanșatorului vor fi de-alocate.