triggers pl sql tutorial with example programs
Izvedite vse o sprožilcih v PL SQL, njihovih vrstah, uporabi in prednostih:
V PL SQL Transakcije vadnica PL / SQL serije , spoznali smo izjave COMMIT, ROLLBACK in SAVEPOINTS.
V tem članku bomo raziskali sprožilce v PL SQL in njihove prednosti, vrste in uporabo. Razpravljali bomo o tem, kako s pomočjo primernih programov ustvariti, sprožiti, omogočiti in onemogočiti sprožilce PL / SQL.
Začnimo z razpravo !!
Kaj se boste naučili:
Sprožilci v PL / SQL
Shranjeni program, ki se privzeto sproži ali zaradi nekaterih dogodkov, se imenuje sprožilec.
Sprožilec se izvede zaradi spodaj naštetih okoliščin:
- Z izjavo DDL (jezik definicije podatkov), kot je DROP, ALTER ali CREATE.
- Z izjavo DML (jezik za manipulacijo s podatki), kot je UPDATE, INSERT ali DELETE.
- Z dejanjem baze podatkov, kot so IZKLOP, ZAGON, ODJAVA in PRIJAVA.
Sprožilec lahko nastavite na shemo, pogled ali bazo podatkov, ki ima priložen dogodek.
Prednosti sprožilcev
Ti so navedeni spodaj:
- Sposobnost uveljavljanja referenčne integritete.
- Sposobnost spremljanja.
- Sposobnost beleženja in hrambe podatkov o dostopu do tabel.
- Sposobnost ustavitve transakcij, ki niso veljavne.
- Sposobnost uveljavljanja varnostnih funkcij.
- Zmožnost izdelave izpeljanih vrednosti stolpcev po privzetku.
Uporabe sprožilcev
Ti so navedeni spodaj:
- Preprečuje nepravilne transakcije.
- Zbira informacije o uporabi tabele.
- Spremljajte ključne informacije.
Vrste sprožilcev v PL / SQL
Sprožilce lahko kategoriziramo glede na parametre. Vrste sprožilcev so navedene spodaj:
# 1) Kategorizacija na ravni sprožilca.
- Sprožilec ROW Level: Izvede se za vsak zapis, ki ga je posodobil stavek DML.
- STATEMENT Sprožilec ravni: Izkaz dogodka ga izvede le enkrat.
# 2) Kategorizacija glede časa sprožilca.
- PRED sprožilcem: Izvede se pred določenim dogodkom, ki se je zgodil.
- PO sprožilcu: Izvede se po določenem dogodku, ki se je zgodil.
- NAMESTO sprožilca: To je posebna vrsta sprožilca in se izvrši za vsak zapis, ki ga je posodobil stavek DML.
# 3) Kategorizacija sprožilnega dogodka.
- Sprožilec DML: Izvede se, če se izvede dogodek DML, kot je UPDATE, INSERT ali DELETE.
- Sprožilec DDL: Izvede se, če se izvede dogodek DDL, kot je DROP, ALTER ali CREATE.
- Sprožilec DATABASE: Izvede se, če se je zgodil dogodek baze podatkov, kot so IZKLOP, ZAGON, LOGOFF in LOGON.
Ustvari sprožilce
Sintaksa za ustvarjanje sprožilca:
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;
Tukaj,
- USTVARI (ALI ZAMENJAJ) TRIGGER sprožilec_n - To je namenjeno ustvarjanju, zamenjavi ali posodabljanju sprožilca, ki ima ime kot trigger_n.
- PO - To je namenjeno določanju časa, ko se sproži sprožilec. INSTEAD OF je za ustvarjanje sprožilca, ki ima pogled.
- IZBRIŠI - To je za izvajanje dejanj DML.
- (OF stolpec_n) - To je namenjeno omembi imena stolpca, ki ga je treba spremeniti.
- (ON table_n) - To je namenjeno omembi imena tabele, ki je pritrjeno na sprožilec.
- (SKLICEVANJE NA STARO KOT NOVO) - To velja za sklicevanje na stare in nove vrednosti s pomočjo stavka DML, kot so UPDATE, INSERT ali DELETE.
- (ZA VSAK VRST) - To določa sprožilec na ravni vrstice, tj. Sprožilec se sproži za vsako spremenjeno vrstico, sicer se sprožilec sproži samo enkrat, ko se izvrši stavek SQL, ki je znan kot sprožilec na ravni tabele.
- KDAJ (stanje) - To daje pogoj za vrstice, za katere bi se sprožil sprožilec. To velja samo za sprožilce na ravni vrstice.
Ponovno razmislimo o tabeli, ki je poimenovana ŠTUDENT .
Ustvarimo zdaj sprožilec na ravni vrstice za tabelo STUDENT, ki bi jo izvršil stavek DML, na primer UPDATE, INSERT ali DELETE v tej tabeli. Sprožilec bo izračunal in prikazal starostno razliko med trenutnimi in prejšnjimi vrednostmi.
Izvedba kode za ustvarjanje sprožilca:
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; /
Izhod zgornje kode:
Zgornja koda ima nekaj pomembnih značilnosti. Spodaj so navedeni:
- Za sprožilec na ravni tabele stari in novi naslovi niso na voljo. Te reference lahko uporabimo za sprožilce na ravni zapisa.
- Če želimo uporabiti drugo poizvedbo v istem sprožilcu, moramo ključno besedo AFTER uporabiti kot sprožilec, ki lahko ponovno spremeni tabelo šele potem, ko so bile prejšnje spremembe pravilno uporabljene.
- Zgoraj obravnavani sprožilec se izvede pred kakršnim koli dejanjem DELETE, UPDATE ali INSERT v tabeli. Lahko pa oblikujemo tudi sprožilec, ki se sproži tudi pri eni sami operaciji ( na primer, PO INSERT, ki bo sprožil sprožilec vsakič, ko je zapis vstavljen s pomočjo operacije INSERT na tabeli).
Sprožitev sprožilcev v PL SQL
Če želite sprožiti zgornji sprožilec, moramo na mizi izvesti katero koli operacijo DML, na primer DELETE, INSERT ali UPDATE. Znova vstavimo nekaj vrednosti v tabelo Student s pomočjo spodnje poizvedbe:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Ko je v tabeli Student končana operacija INSERT, sprožilec starostne_spremembe se izvrši.
Rezultat kode poizvedbe:
Ker je ustvarjen nov zapis in prejšnja starost ni na voljo, sta prejšnja starost in Starostna razlika izračun je v zgornjem izhodu ničen.
Zdaj pa nam spremenite zapis s stavkom UPDATE s pomočjo spodnje poizvedbe:
UPDATE student SET age = age + 1 WHERE code = 7;
Ko je v tabeli Student končana operacija UPDATE, sprožilec starostne_spremembe se izvrši.
Rezultat zgornje poizvedbe:
NOVO IN STARO Klavzulo
Nov stavek se uporablja za shranjevanje nove vrednosti za stolpce tabele za izvajanje sprožilca. Uporablja se v sprožilcih na ravni zapisa. Stara klavzula se uporablja za shranjevanje stare vrednosti za stolpce tabele za izvajanje sprožilca. Uporablja se tudi v sprožilcih na ravni zapisa.
Tako se nova in stara klavzula uporabljata za zadrževanje in sklicevanje na nove in stare vrednosti znotraj telesa sprožilca.
Sestavljeni sprožilec
Sestavljeni sprožilec se uporablja za določanje operacij za vse časovne točke znotraj telesa sprožilca. Omogoča združitev vseh dejanj v različnih časovnih okvirih znotraj enega telesa sprožilca.
Spodaj so navedene različne časovne točke:
- PO STOPI
- PRED REDOM
- PO RAZREDNI ravni
- PRED STOPOM
Onemogoči in omogoči sprožilec
Sprožilec lahko omogočimo in onemogočimo s pomočjo izjave DDL ALTER.
Sintaksa:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Tu je trigger_n ime sprožilca, ki ga želimo omogočiti ali onemogočiti.
Zdaj onemogočimo sprožilec s pomočjo spodnje poizvedbe:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Rezultat kode poizvedbe:
Zdaj omogočimo isti sprožilec s pomočjo spodnje poizvedbe:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Rezultat kode poizvedbe:
Pogosta vprašanja in odgovori
V # 1) Koliko vrst sprožilcev obstaja v PL SQL?
Odgovor: V PL / SQL obstajata dve vrsti sprožilcev. So sprožilec na ravni vrstice in sprožilec na ravni izjave.
V # 2) Katera vrsta sprožilca uporablja stare in nove kvalifikacije?
kako narediti enostransko aplikacijo z uporabo angularjs
Odgovor: Stare in nove kvalifikacije je mogoče uporabiti samo s sprožilci na ravni vrstice. Niso združljivi s sprožilci na ravni stavkov.
V # 3) Kakšna je razlika med sprožilcem nov in sprožilcem starim?
Odgovor: Nov sprožilec poda seznam novih različic predmetov zapisa. Star sprožilec poda seznam starih različic predmetov zapisa.
V # 4) Kaj je sprožilec na ravni vrstice v PL SQL?
Odgovor: Sprožilec na ravni vrstice se sproži za vrstico samo enkrat zaradi dogodka. Na primer, če se izbris šteje kot sprožilni dogodek za tabelo, stavek delete vpliva na dve vrstici, potem se sprožilec sproži dvakrat.
V # 5) Kaj je sprožilec? Pojasnite s primerom.
Odgovor: Sprožilec je shranjeni postopek, ki se privzeto sproži, če pride do incidenta v bazi podatkov. Na primer, če je vrstica vstavljena v tabelo ali spreminjamo nekatere vrednosti v tabeli.
V # 6) Kateri so poznejši sprožilci?
Odgovor: Po sprožilcih sprožijo se po izvedbi stavka DML, vendar pred objavo v zbirki podatkov. Prav tako je sposoben sprostiti svoje delovanje.
Zaključek
V tej vadnici smo obravnavali nekaj osnovnih konceptov sprožilcev v PL SQL, ki so bistveni za njihovo uporabo med programiranjem. Obravnavali smo naslednje teme, navedene spodaj:
- Sprožilci.
- Vrste sprožilcev.
- Različne operacije na sprožilcih.
<< PREV Tutorial | NASLEDNJA Vadnica >>