triggers pl sql tutorial with example programs
Aflați totul despre declanșatoarele din PL SQL, tipurile, utilizarea și avantajele acestora:
În PL SQL Tranzacții tutorial de Seria PL / SQL , am aflat despre declarațiile COMMIT, ROLLBACK și SAVEPOINTS.
În acest articol, vom explora declanșatoarele din PL SQL și avantajele, tipurile și utilizarea acestora. Vom discuta despre crearea, declanșarea, activarea și dezactivarea declanșatoarelor PL / SQL cu ajutorul unor exemple de programe.
Să începem cu discuția !!
Ce veți învăța:
Declanșatoare în PL / SQL
Un program stocat care este declanșat în mod implicit sau de unele evenimente se numește declanșator.
Un declanșator este executat din următoarele circumstanțe enumerate mai jos:
- Printr-o declarație DDL (Data Definition Language) precum DROP, ALTER sau CREATE.
- Printr-o declarație DML (Limbaj de manipulare a datelor), cum ar fi UPDATE, INSERT sau DELETE.
- Printr-o acțiune a bazei de date precum SHUTDOWN, STARTUP, LOGOFF și LOGON.
Un declanșator poate fi setat pe o schemă, vizualizare sau bază de date care are atașat un eveniment.
Avantajele declanșatoarelor
Acestea sunt enumerate mai jos:
- Capacitatea de a impune integritatea referențială.
- Capacitatea de monitorizare.
- Abilitatea de a înregistra și păstra date pe tabele de acces.
- Abilitatea de a opri tranzacțiile care nu sunt valide.
- Capacitatea de a aplica caracteristici de securitate.
- Abilitatea de a produce în mod implicit valori de coloană derivate.
Utilizări ale declanșatoarelor
Acestea sunt enumerate mai jos:
- Previne tranzacțiile necorespunzătoare.
- Acumulează informații despre utilizarea tabelelor.
- Monitorizați informațiile critice.
Tipuri de declanșatoare în PL / SQL
Declanșatoarele pot fi clasificate pe baza parametrilor. Tipurile de declanșatoare sunt enumerate mai jos:
# 1) Categorizarea la nivelul declanșatorului.
- Declanșator nivel ROW: Se execută pentru fiecare înregistrare care a fost actualizată de o declarație DML.
- DECLARAȚIE Nivel declanșator: Este executat o singură dată de declarația evenimentului.
# 2) Categorizarea pe timpul de declanșare.
- ÎNAINTE să declanșați: Se execută înainte de evenimentul specific care a avut loc.
- DUPĂ declanșare: Se execută după evenimentul specific care a avut loc.
- În locul declanșatorului: Este un tip special de declanșator și se execută pentru fiecare înregistrare care a fost actualizată de o instrucțiune DML.
# 3) Categorizarea evenimentului declanșator.
- Declanșator DML: Se execută dacă se efectuează un eveniment DML precum UPDATE, INSERT sau DELETE.
- Declanșator DDL: Se execută dacă se efectuează un eveniment DDL precum DROP, ALTER sau CREATE.
- Declanșator BAZĂ DE DATE: Se execută dacă a avut loc un eveniment de bază de date precum SHUTDOWN, STARTUP, LOGOFF și LOGON.
Creați declanșatoare
Sintaxa pentru crearea unui declanșator:
CREATE (OR REPLACE ) TRIGGER trigger_n BEFORE DELETE (OF column_n) ON table_n (REFERENCING OLD AS o NEW AS n) (FOR EACH ROW) WHEN (condition) DECLARE <> BEGIN < > EXCEPTION <> END;
Aici,
- CREAȚI (SAU ÎNLOCUIȚI) TRIGGER trigger_n - Aceasta este pentru crearea, înlocuirea sau actualizarea unui declanșator cu un nume ca trigger_n.
- DUPĂ - Aceasta este pentru a determina ora când va fi declanșat declanșatorul. INSTEAD OF este pentru crearea unui declanșator care are o vedere.
- ȘTERGE - Aceasta este pentru executarea acțiunilor DML.
- (OF column_n) - Aceasta este pentru menționarea numelui coloanei care va fi modificat.
- (ON table_n) - Aceasta este pentru a menționa numele tabelului care este atașat declanșatorului.
- (REFERINȚARE VECHI CÂT O NOUĂ CA n) - Aceasta este pentru a face referire la valorile vechi și noi prin declarația DML, cum ar fi UPDATE, INSERT sau DELETE.
- (PENTRU FIECARE RÂND) - Acest lucru determină un declanșator la nivel de rând, adică declanșatorul va fi declanșat pentru fiecare rând modificat, altfel declanșatorul va declanșa o singură dată când se execută instrucțiunea SQL, care este cunoscută sub numele de declanșator la nivel de tabel.
- CÂND (stare) - Aceasta oferă o condiție pentru rândurile pentru care ar fi executat declanșatorul. Acest lucru este aplicabil numai pentru declanșatoarele la nivel de rând.
Să luăm din nou în considerare un tabel numit STUDENT .
Să creăm acum un declanșator la nivel de rând pentru tabela STUDENT, care ar fi executat de instrucțiunea DML, cum ar fi UPDATE, INSERT sau DELETE pe tabela respectivă. Declanșatorul va calcula și va arăta diferența de vârstă între valorile curente și cele anterioare.
Implementarea codului pentru crearea declanșatorului:
CREATE OR REPLACE TRIGGER age_changes BEFORE DELETE OR INSERT OR UPDATE ON student FOR EACH ROW WHEN (NEW.CODE > 0) DECLARE age_diff number; BEGIN age_diff := :NEW.age - :OLD.age; dbms_output.put_line ('Prevoius age: ' || : OLD.age); dbms_output.put_line ('Current age: ' || : NEW.age); dbms_output.put_line ('Age difference: ' || age_diff); END; /
Ieșirea codului de mai sus:
Codul de mai sus are câteva caracteristici importante. Acestea sunt enumerate mai jos:
- Pentru un declanșator la nivel de tabelă, adresele VECHI și NOI nu sunt disponibile. Putem folosi aceste referințe pentru declanșatoarele la nivel de înregistrare.
- Dacă dorim să aplicăm o altă interogare în același declanșator, atunci trebuie să folosim cuvântul cheie DUPĂ ca declanșator care poate modifica din nou un tabel numai după ce modificările anterioare sunt aplicate corect.
- Declanșatorul discutat mai sus este executat înainte de orice acțiune DELETE, UPDATE sau INSERT pe masă. Cu toate acestea, putem proiecta și un declanșator care se declanșează și pe o singură operație ( de exemplu, DUPĂ INSERARE care va executa declanșatorul ori de câte ori se introduce o înregistrare cu ajutorul operației INSERT pe masă).
Triggering Triggers În PL SQL
Pentru a declanșa declanșatorul de mai sus, trebuie să facem orice operațiune DML precum DELETE, INSERT sau UPDATE pe masă. Să introducem din nou câteva valori în tabelul Student cu ajutorul interogării de mai jos:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Odată ce operațiunea INSERT este finalizată în tabelul Student, declanșatorul schimbări_de vârstă este executat.
Ieșirea codului de interogare:
Deoarece este creată o nouă înregistrare și vârsta anterioară nu este disponibilă, vârsta anterioară și Diferență de vârstă calculul este nul în rezultatul de mai sus.
Acum, lasă-ne modificați o înregistrare cu declarația UPDATE cu ajutorul interogării de mai jos:
UPDATE student SET age = age + 1 WHERE code = 7;
Odată ce operațiunea UPDATE este finalizată în tabelul Student, declanșatorul schimbări_de vârstă este executat.
Rezultatul interogării de mai sus:
Clauza NOI ȘI VECHI
O nouă clauză este utilizată pentru a stoca noua valoare pentru coloanele tabelului pentru executarea declanșatorului. Este utilizat în declanșatoarele de nivel record. O clauză veche este utilizată pentru a stoca vechea valoare pentru coloanele tabelului pentru executarea declanșatorului. Este, de asemenea, utilizat în declanșatoarele la nivel record.
Astfel, clauza nouă și cea veche este folosită pentru a menține și a se referi la valorile noi și vechi dintr-un corp declanșator.
Declanșator compus
Un declanșator compus este utilizat pentru a defini operațiunile pentru toate punctele de sincronizare din corpul declanșatorului. Oferă dispoziția de a fuziona toate acțiunile la momente diferite într-un singur corp declanșator.
Diferitele puncte de sincronizare sunt enumerate mai jos:
- Nivel DUPĂ DECLARAȚIE
- ÎNAINTE de nivelul ROW
- Nivelul DUPĂ RÂND
- ÎNAINTE DE DECLARAȚIE nivel
Dezactivați și activați declanșatorul
Putem activa și dezactiva un declanșator cu ajutorul unei instrucțiuni DDL ALTER.
Sintaxă:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Aici, trigger_n este numele declanșatorului pe care dorim să îl activăm sau să îl dezactivăm.
Acum, să dezactivăm declanșatorul cu ajutorul interogării de mai jos:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Ieșirea codului de interogare:
Acum permiteți-ne să activăm același declanșator cu ajutorul interogării de mai jos:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Ieșirea codului de interogare:
Întrebări și răspunsuri frecvente
Q # 1) Câte tipuri de declanșatoare există în PL SQL?
Răspuns: Există două tipuri de declanșatoare în PL / SQL. Acestea sunt declanșatoare la nivel de rând și declanșator la nivel de declarație.
Q # 2) Ce tip de declanșator folosește calificările vechi și noi?
oracle sql pl sql întrebări de interviu
Răspuns: Calificările vechi și noi pot fi utilizate numai cu declanșatoare la nivel de rând. Nu sunt compatibile cu declanșatoarele la nivel de instrucțiuni.
Î # 3) Care este diferența dintre declanșatorul nou și declanșatorul vechi?
Răspuns: Un nou declanșator oferă o listă de noi versiuni ale obiectelor de înregistrare. Un declanșator vechi oferă o listă de versiuni vechi ale obiectelor de înregistrare.
Q # 4) Ce este un declanșator la nivel de rând în PL SQL?
Răspuns: Un declanșator la nivel de rând se declanșează pentru un rând o singură dată din cauza unui eveniment. De exemplu, dacă ștergerea este considerată ca un eveniment declanșator pentru un tabel, o instrucțiune de ștergere afectează două rânduri, atunci declanșatorul va fi declanșat de două ori.
Q # 5) Ce este un declanșator? Explicați cu un exemplu.
Răspuns: Un declanșator este o procedură stocată care este declanșată în mod implicit dacă apare un incident în baza de date. De exemplu, dacă un rând este inserat într-un tabel sau modificăm unele valori din tabel.
Q # 6) Care sunt declanșatoarele ulterioare?
Răspuns: Declanșatoarele de după sunt declanșate după executarea unei instrucțiuni DML, dar înainte de validarea în baza de date. De asemenea, este capabil să își retragă acțiunea.
Concluzie
În acest tutorial, am discutat câteva concepte de bază ale declanșatoarelor în PL SQL care sunt esențiale pentru a le utiliza în timpul programării. Am abordat următoarele subiecte enumerate mai jos:
- Declanșatoare.
- Tipuri de declanșatoare.
- Diverse operații pe declanșatoare.
<< PREV Tutorial | URMĂTOARE Tutorial >>