triggers pl sql tutorial with example programs
Dozviete sa všetko o spúšťačoch v PL SQL, ich typoch, použití a výhodách:
V Transakcie PL SQL návod na Séria PL / SQL , dozvedeli sme sa o príkazoch COMMIT, ROLLBACK a SAVEPOINTS.
V tomto článku preskúmame spúšťače v PL SQL a ich výhody, typy a použitie. Budeme diskutovať o tom, ako vytvoriť, spustiť, povoliť a zakázať spúšťače PL / SQL pomocou ukážkových programov.
Začnime diskusiou !!
Čo sa dozviete:
Spúšťače v PL / SQL
Uložený program, ktorý sa spúšťa predvolene alebo niektorými udalosťami, sa nazýva spúšťač.
Spúšťač sa vykoná z dôvodu nasledujúcich okolností uvedených nižšie:
- Výrokom DDL (Data Definition Language) ako DROP, ALTER alebo CREATE.
- Výrokom DML (Data Manipulation Language) ako UPDATE, INSERT alebo DELETE.
- Akciou databázy ako VYPNUTIE, SPUŠTENIE, ODHLÁSENIE a PRIHLÁSENIE.
Spúšťač je možné nastaviť v schéme, zobrazení alebo databáze, ktorá má pripojenú udalosť.
Výhody spúšťačov
Sú uvedené nižšie:
- Schopnosť vynútiť referenčnú integritu.
- Schopnosť monitorovania.
- Schopnosť zaznamenávať a uchovávať údaje o prístupe k tabuľkám.
- Schopnosť zastaviť transakcie, ktoré nie sú platné.
- Schopnosť presadiť bezpečnostné prvky.
- Schopnosť štandardne vytvárať odvodené hodnoty stĺpcov.
Využitie spúšťačov
Sú uvedené nižšie:
- Zabraňuje nesprávnym transakciám.
- Zhromažďuje informácie o použití tabuľky.
- Monitorujte dôležité informácie.
Typy spúšťačov v PL / SQL
Spúšťače je možné kategorizovať na základe parametrov. Typy spúšťačov sú uvedené nižšie:
# 1) Kategorizácia na spúšťacej úrovni.
- Spúšťač úrovne ROW: Vykoná sa pre každý záznam, ktorý sa aktualizuje vyhlásením DML.
- VYHLÁSENIE Spúšťač úrovne: Vykoná sa iba raz príkazom udalosti.
# 2) Kategorizácia podľa časovania spúšťača.
- PRED spúšťou: Vykoná sa pred konkrétnou udalosťou, ktorá sa stala.
- PO spúšti: Vykoná sa po konkrétnej udalosti, ktorá sa stala.
- NAMIESTO spúšťača: Je to špeciálny typ spúšťača a vykoná sa pre každý záznam, ktorý sa aktualizuje príkazom DML.
# 3) Kategorizácia spúšťacej udalosti.
- Spúšť DML: Vykoná sa, ak sa vykoná udalosť DML, ako napríklad UPDATE, INSERT alebo DELETE.
- Spúšťač DDL: Vykoná sa, ak sa vykoná udalosť DDL ako DROP, ALTER alebo CREATE.
- Spúšťač DATABASE: Vykoná sa, ak sa vyskytla databázová udalosť ako VYPNUTIE, SPUŠTENIE, LOGOFF a LOGON.
Vytvorte spúšťače
Syntax pre vytvorenie spúšťač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;
Tu,
- VYTVORIŤ (ALEBO VYMENIŤ) SPUŠŤ trigger_n - Slúži na vytvorenie, nahradenie alebo aktualizáciu spúšťača s názvom trigger_n.
- PO - Slúži na určenie času, kedy sa spustí spúšťač. INSTEAD OF slúži na vytvorenie spúšťača, ktorý má pohľad.
- ODSTRÁNIŤ - Toto je na vykonávanie akcií DML.
- (OF column_n) - Toto je potrebné spomenúť názov stĺpca, ktorý sa má upraviť.
- (ON table_n) - Je to potrebné spomenúť názov tabuľky, ktorá je pripojená k spúšťaču.
- (ODKAZ NA STARÉ AKO NOVÉ AKO N) - Toto je pre odkazovanie na staré a nové hodnoty príkazom DML ako UPDATE, INSERT alebo DELETE.
- (PRE KAŽDÚ RADU) - Toto určuje spúšťač na úrovni riadkov, t. J. Spúšťač sa spustí pre každý upravený riadok, inak sa spúšťač spustí iba raz, keď sa vykoná príkaz SQL, ktorý sa nazýva spúšťač na úrovni tabuľky.
- KEDY (podmienka) - To dáva podmienku pre riadky, pre ktoré by sa spustil spúšťač. Toto platí pre iba spúšťače na úrovni riadkov.
Zvážme opäť tabuľku, ktorá je pomenovaná ŠTUDENT .
Poďme teraz vytvoriť spúšťač na úrovni riadku pre tabuľku STUDENT, ktorý by sa vykonal príkazom DML ako UPDATE, INSERT alebo DELETE v tejto tabuľke. Spúšťač vypočíta a zobrazí vekový rozdiel medzi aktuálnymi a predchádzajúcimi hodnotami.
Implementácia kódu na vytvorenie spúšťač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; /
Výstup vyššie uvedeného kódu:
Vyššie uvedený kód má niektoré dôležité vlastnosti. Sú uvedené nižšie:
- Pre spúšťač na úrovni tabuľky nie sú k dispozícii STARÉ a NOVÉ adresy. Tieto odkazy môžeme použiť na spúšťače na úrovni záznamu.
- Ak chceme v rovnakom spúšťači použiť iný dotaz, musíme ako spúšťač použiť kľúčové slovo PO, ktoré môže tabuľku znova upraviť až po správnom použití predchádzajúcich úprav.
- Vyššie uvedený spúšťač sa spúšťa pred akoukoľvek operáciou DELETE, UPDATE alebo INSERT v tabuľke. Môžeme však tiež navrhnúť spúšť, ktorá sa vyhodí aj pri jednej operácii ( napríklad, PO VLOŽENÍ, ktoré vykoná spúšť, kedykoľvek je vložený záznam pomocou operácie VLOŽIŤ na stole).
Spúšťanie spúšťačov v PL SQL
Ak chcete spustiť vyššie uvedený spúšťač, musíme na stole vykonať akékoľvek operácie DML, ako napríklad DELETE, INSERT alebo UPDATE. Opäť vložíme niektoré hodnoty do tabuľky Student pomocou nasledujúceho dotazu:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Po dokončení operácie INSERT v tabuľke Študent sa spustí spúšťač vek_zmeny je popravený.
Výstup kódu dotazu:
Pretože sa vytvorí nový záznam a predchádzajúci vek nie je k dispozícii, predchádzajúci vek a Vekový rozdiel výpočet je vo vyššie uvedenom výstupe nulový.
Teraz poďme upraviť záznam pomocou príkazu UPDATE pomocou nasledujúceho dotazu:
UPDATE student SET age = age + 1 WHERE code = 7;
Po dokončení operácie UPDATE v Študentskej tabuľke sa spustí spúšťač vek_zmeny je popravený.
Výstup vyššie uvedeného dotazu:
NOVÁ A STARÁ doložka
Na uloženie novej hodnoty pre stĺpce tabuľky na vykonávanie spúšťača sa používa nová klauzula. Používa sa v spúšťačoch na úrovni záznamu. Stará klauzula sa používa na uloženie starej hodnoty pre stĺpce tabuľky na vykonanie spúšťača. Používa sa tiež v spúšťačoch na úrovni záznamu.
Nová a stará klauzula sa teda používa na zadržanie a odkaz na nové a staré hodnoty v tele spúšťača.
Zložený spúšťač
Zložený spúšťač sa používa na definovanie operácií pre všetky časovacie body v tele spúšťača. Poskytuje ustanovenie na zlúčenie všetkých akcií v rôznom načasovaní v rámci jedného spúšťacieho orgánu.
Nižšie sú uvedené rôzne časové body:
- PO VYHLÁSENÍ úrovni
- ÚROVEŇ PRED RIADKOM
- ÚROVEŇ PO RIADKU
- PRED VYHLÁSENÍM
Zakázať a povoliť spúšťač
Spúšťač môžeme povoliť a zakázať pomocou príkazu DDL ALTER.
Syntax:
ALTER TRIGGER trigger_n (ENABLE|DISABLE);
V tomto prípade je trigger_n názov spúšťača, ktorý chceme povoliť alebo zakázať.
Teraz deaktivujme spúšťač pomocou nižšie uvedeného dotazu:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Výstup kódu dotazu:
Teraz povoľme ten istý spúšťač pomocou nižšie uvedeného dotazu:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Výstup kódu dotazu:
Často kladené otázky a odpovede
Otázka 1) Koľko typov spúšťačov existuje v PL SQL?
Odpoveď: V PL / SQL existujú dva typy spúšťačov. Sú to spúšťač na úrovni riadkov a spúšťač na úrovni výpisu.
Otázka č. 2) Ktorý typ spúšťača používa starý a nový kvalifikátor?
príklad dvojnásobne prepojeného zoznamu c ++
Odpoveď: Starú a novú kvalifikáciu je možné použiť iba so spúšťačmi na úrovni riadkov. Nie sú kompatibilné so spúšťačmi na úrovni výpisu.
Otázka č. 3) Aký je rozdiel medzi spúšťacím mechanizmom novým a starým spúšťacím mechanizmom?
Odpoveď: Nový spúšťač poskytuje zoznam nových verzií záznamových objektov. Starý spúšťač poskytuje zoznam starých verzií záznamových objektov.
Otázka č. 4) Čo je spúšťač na úrovni riadku v PL SQL?
Odpoveď: Spúšťač na úrovni riadku sa spustí pre riadok iba raz kvôli udalosti. Napríklad, Ak sa mazanie považuje za spúšťaciu udalosť tabuľky, príkaz mazania ovplyvňuje dva riadky, potom sa spúšťač spustí dvakrát.
Otázka č. 5) Čo je spúšťač? Vysvetlite na príklade.
Odpoveď: Spúšťač je uložená procedúra, ktorá sa štandardne aktivuje, ak v databáze dôjde k incidentu. Napríklad, ak je do tabuľky vložený riadok alebo upravujeme niektoré hodnoty v tabuľke.
Otázka č. 6) Čo sú dodatočné spúšťače?
Odpoveď: Následné spúšťače sa spustia po vykonaní príkazu DML, ale pred potvrdením v databáze. Je tiež schopný vrátiť späť svoju činnosť.
Záver
V tomto tutoriáli sme diskutovali o niekoľkých základných konceptoch Triggerov v PL SQL, ktoré sú nevyhnutné na ich použitie pri programovaní. Prebrali sme nasledujúce témy uvedené nižšie:
- Spúšťače.
- Typy spúšťačov.
- Rôzne operácie so spúšťačmi.
<< PREV Tutorial | ĎALŠÍ výukový program >>