triggers pl sql tutorial with example programs
Saznajte sve o okidačima u PL SQL-u, njihovim vrstama, upotrebi i prednostima:
U PL SQL transakcije vodič za PL / SQL serija , saznali smo o naredbama COMMIT, ROLLBACK i SAVEPOINTS.
U ovom ćemo članku istražiti pokretače u PL SQL-u i njihove prednosti, vrste i upotrebu. Razgovarat ćemo o tome kako stvoriti, pokrenuti, omogućiti i onemogućiti PL / SQL okidače uz pomoć primjera programa.
Počnimo s raspravom !!
Što ćete naučiti:
Okidači u PL / SQL-u
Pohranjeni program koji se pokreće prema zadanim postavkama ili nekim događajima naziva se okidač.
Okidač se izvršava zbog sljedećih okolnosti navedenih u nastavku:
- Izjavom DDL (jezik definicije podataka) poput DROP, ALTER ili CREATE.
- DML (Data Manipulation Language) naredbom poput UPDATE, INSERT ili DELETE.
- Djelovanjem baze podataka kao što su IZKLOP, POKRETANJE, ODJAVA i PRIJAVA.
Okidač se može postaviti na shemi, prikazu ili bazi podataka koja ima pridruženi događaj.
Prednosti okidača
Oni su navedeni u nastavku:
- Sposobnost provođenja referentnog integriteta.
- Sposobnost praćenja.
- Sposobnost evidentiranja i čuvanja podataka o pristupu tablicama.
- Sposobnost zaustavljanja transakcija koje nisu valjane.
- Sposobnost provođenja sigurnosnih značajki.
- Sposobnost izrade izvedenih vrijednosti stupaca prema zadanim postavkama.
Upotrebe okidača
Oni su navedeni u nastavku:
- Sprječava nepravilne transakcije.
- Prikuplja informacije o upotrebi tablice.
- Praćenje kritičnih informacija.
Vrste okidača u PL / SQL-u
Okidači se mogu kategorizirati na temelju parametara. Vrste okidača navedene su u nastavku:
# 1) Kategorizacija na razini okidača.
- ROW Level okidač: Izvršava se za svaki zapis koji je ažuriran DML izrazom.
- STATEMENT Okidač razine: Izvedba događaja izvršava ga samo jednom.
# 2) Kategorizacija na vremenu aktiviranja.
- PRIJE okidača: Izvršava se prije određenog događaja koji se dogodio.
- NAKON okidača: Izvršava se nakon određenog događaja koji se dogodio.
- UMJESTO okidača: To je posebna vrsta okidača i izvršava se za svaki zapis koji je ažuriran DML izrazom.
# 3) Kategorizacija događaja okidača.
- DML okidač: Izvršava se ako se izvede DML događaj poput UPDATE, INSERT ili DELETE.
- DDL okidač: Izvršava se ako se izvede DDL događaj poput DROP, ALTER ili CREATE.
- Okidač DATABASE: Izvršava se ako se dogodio događaj baze podataka kao što su SHUTDOWN, STARTUP, LOGOFF i LOGON.
Stvorite okidače
Sintaksa za stvaranje okidača:
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;
Ovdje,
- IZRADI (ILI ZAMIJENI) TRIGGER okidač_n - Ovo je za stvaranje, zamjenu ili ažuriranje okidača koji ima naziv okidač_n.
- NAKON - Ovo služi za određivanje vremena kada će se aktivirati okidač. UMJESTO ZA služi za stvaranje okidača koji ima pogled.
- IZBRIŠI - Ovo je za izvršavanje DML radnji.
- (OD stupac_n) - Ovo je za spominjanje naziva stupca koji će se izmijeniti.
- (ON table_n) - Ovo je za spominjanje naziva tablice koji je pričvršćen na okidač.
- (NAVEDENO STARO KAO NOVO) - Ovo je za upućivanje na stare i nove vrijednosti pomoću DML izraza poput UPDATE, INSERT ili DELETE.
- (ZA SVAKI RED) - To određuje okidač na razini retka, tj. Okidač će se aktivirati za svaki redak koji je modificiran, inače će se okidač aktivirati samo jednom kada se izvrši SQL izraz, koji je poznat kao okidač na razini tablice.
- KADA (stanje) - To daje uvjet za retke za koje bi se izvršio okidač. To se odnosi na samo okidače na razini retka.
Razmotrimo opet tablicu koja je imenovana STUDENT .
Stvorimo sada okidač na razini retka za tablicu STUDENT koji bi se izvršio DML izrazom poput UPDATE, INSERT ili DELETE na toj tablici. Okidač će izračunati i prikazati dobnu razliku između trenutnih i prethodnih vrijednosti.
Implementacija koda za stvaranje okidača:
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; /
Izlaz gornjeg koda:
Gornji kod ima neke važne karakteristike. Oni su navedeni u nastavku:
- Za okidač na razini tablice nisu dostupne STARE i NOVE adrese. Te reference možemo koristiti za okidače na razini zapisa.
- Ako želimo primijeniti još jedan upit u istom okidaču, tada moramo koristiti ključnu riječ NAKON kao okidač koji može ponovno izmijeniti tablicu tek nakon što su prethodne izmjene pravilno primijenjene.
- Gore navedeni okidač izvršava se prije bilo koje radnje DELETE, UPDATE ili INSERT na tablici. Međutim, također možemo dizajnirati okidač koji se aktivira i u jednoj operaciji ( na primjer, NAKON INSERT-a koji će pokrenuti okidač kad god se zapis ubaci uz pomoć operacije INSERT na tablici).
Pokretanje okidača u PL SQL-u
Da bismo aktivirali gornji okidač, na stolu moramo izvršiti bilo koju DML operaciju poput IZBRIŠI, UMETNI ili UPDATIRAJ. Umetnimo opet neke vrijednosti u studentsku tablicu uz pomoć donjeg upita:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Jednom kada je operacija INSERT dovršena u studentskoj tablici, okidač dobne_promjene bude pogubljen.
Izlaz koda upita:
Budući da je stvoren novi zapis, a prethodna dob nije dostupna, prethodna dob i Razlika u godinama računanje dolazi kao nula u gornji izlaz.
Sad, pusti nas izmijeniti zapis pomoću naredbe UPDATE uz pomoć upita u nastavku:
UPDATE student SET age = age + 1 WHERE code = 7;
Jednom kada je operacija UPDATE dovršena u studentskoj tablici, okidač dobne_promjene bude pogubljen.
Izlaz gornjeg upita:
NOVA I STARA klauzula
Nova klauzula koristi se za spremanje nove vrijednosti za stupce tablice za izvršavanje okidača. Koristi se u okidačima na razini zapisa. Stara se klauzula koristi za pohranu stare vrijednosti za stupce tablice za izvršavanje okidača. Također se koristi u okidačima na razini zapisa.
Stoga se nova i stara klauzula koriste za zadržavanje i upućivanje na nove i stare vrijednosti unutar tijela okidača.
Složeni okidač
Složeni okidač koristi se za definiranje operacija za sve vremenske točke unutar tijela okidača. Daje odredbu o spajanju svih radnji u različita vremena unutar jednog tijela okidača.
U nastavku su navedene razne vremenske točke:
- NAKON IZJAVE
- PRIJE RAZINE REDA
- NAKON REDA
- PRIJE IZJAVE
Onemogući i omogući okidač
Okidač možemo omogućiti i onemogućiti uz pomoć DDL izraza ALTER.
Sintaksa:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
Ovdje je trigger_n naziv okidača koji želimo omogućiti ili onemogućiti.
Ajmo sada onemogućiti okidač uz pomoć upita u nastavku:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Izlaz koda upita:
Sada omogućimo isti okidač uz pomoć donjeg upita:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Izlaz koda upita:
Često postavljana pitanja i odgovori
P # 1) Koliko vrsta okidača postoji u PL SQL-u?
Odgovor: Postoje dvije vrste okidača u PL / SQL-u. Oni su okidač na razini retka i okidač na razini izjave.
P # 2) Koja vrsta okidača koristi stare i nove kvalifikacije?
primjer dvostruko povezane liste c ++
Odgovor: Stari i novi kvalifikatori mogu se koristiti samo s okidačima na razini reda. Nisu kompatibilni s okidačima na razini izjave.
P # 3) Koja je razlika između okidača novog i okidača starog?
Odgovor: Novi okidač daje popis novih verzija objekata zapisa. Stari okidač daje popis starih verzija objekata zapisa.
P # 4) Što je okidač na razini retka u PL SQL-u?
Odgovor: Okidač na razini retka aktivira se za red samo jednom zbog događaja. Na primjer, ako se brisanje smatra događajem okidača za tablicu, izraz brisanja utječe na dva retka, tada se okidač aktivira dva puta.
P # 5) Što je okidač? Objasnite na primjeru.
Odgovor: Okidač je pohranjena procedura koja se prema zadanim postavkama aktivira ako se incident dogodi u bazi podataka. Na primjer, ako je redak umetnut u tablicu ili mijenjamo neke vrijednosti u tablici.
P # 6) Koji su naknadni okidači?
Odgovor: Okidači after aktiviraju se nakon izvršenja DML izraza, ali prije urezivanja u bazu podataka. Također je sposoban povući svoje djelovanje.
Zaključak
U ovom uputstvu raspravljali smo o nekim osnovnim konceptima okidača u PL SQL-u koji su ključni za njihovu upotrebu tijekom programiranja. Obradili smo sljedeće teme navedene u nastavku:
- Okidači.
- Vrste okidača.
- Razne operacije na okidačima.
<< PREV Tutorial | SLJEDEĆA Vodič >>