triggers pl sql tutorial with example programs
Zjistěte vše o spouštěcích programech v PL SQL, jejich typech, použití a výhodách:
V Transakce PL SQL návod na Série PL / SQL , jsme se dozvěděli o příkazech COMMIT, ROLLBACK a SAVEPOINTS.
V tomto článku prozkoumáme triggery v PL SQL a jejich výhody, typy a použití. Budeme diskutovat o tom, jak vytvořit, aktivovat, povolit a zakázat spouštěče PL / SQL pomocí ukázkových programů.
Začněme s diskusí !!
Co se naučíte:
Spouštění v PL / SQL
Uložený program, který je aktivován ve výchozím nastavení nebo některými událostmi, se nazývá spouštěč.
Spouštěč je spuštěn kvůli následujícím okolnostem uvedeným níže:
- Pomocí příkazu DDL (Data Definition Language), jako je DROP, ALTER nebo CREATE.
- Příkazem DML (Data Manipulation Language), jako je UPDATE, INSERT nebo DELETE.
- Akce databáze jako SHUTDOWN, STARTUP, LOGOFF a LOGON.
Spouštěč lze nastavit na schématu, pohledu nebo databázi, ke které je připojena událost.
Výhody spouštěčů
Jsou uvedeny níže:
- Schopnost vynutit referenční integritu.
- Schopnost monitorování.
- Schopnost protokolovat a uchovávat data o přístupu k tabulkám.
- Schopnost zastavit transakce, které nejsou platné.
- Schopnost prosazovat bezpečnostní funkce.
- Schopnost standardně vytvářet odvozené hodnoty sloupců.
Využití spouštěčů
Jsou uvedeny níže:
- Zabraňuje nesprávným transakcím.
- Shromažďuje informace o využití tabulky.
- Monitorujte důležité informace.
Typy spouštěčů v PL / SQL
Spouštěče lze kategorizovat na základě parametrů. Níže jsou uvedeny typy spouštěčů:
# 1) Kategorizace na spouštěcí úrovni.
- Spouštěč úrovně ROW: Spustí se pro každý záznam, který byl aktualizován příkazem DML.
- PROHLÁŠENÍ Úroveň spouště: Provede se pouze jednou příkazem události.
# 2) Kategorizace podle časování spouště.
- PŘED spouští: Provede se před konkrétní událostí, ke které došlo.
- PO spoušti: Provádí se po konkrétní události, ke které došlo.
- Namísto spouštěče: Jedná se o speciální typ spouštěče a provádí se pro každý záznam, který byl aktualizován příkazem DML.
# 3) Kategorizace spouštěcí události.
- Spouštěč DML: Spustí se, pokud se provede událost DML, jako je UPDATE, INSERT nebo DELETE.
- Spouštěč DDL: Spustí se, pokud se provede událost DDL, jako je DROP, ALTER nebo CREATE.
- Spoušť DATABÁZE: Spustí se, pokud proběhla databázová událost jako VYPNUTÍ, SPUŠTĚNÍ, LOGOFF a LOGON.
Vytvořte spouštěče
Syntaxe pro vytvoření spouštěče:
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;
Tady,
- VYTVOŘIT [NEBO VYMĚNIT] TRIGGER trigger_n - To je pro vytvoření, nahrazení nebo aktualizaci spouštěče, který má název jako trigger_n.
- PO - To slouží k určení času, kdy bude aktivována spoušť. INSTEAD OF je pro vytvoření spouštěče, který má pohled.
- ODSTRANIT - To je pro provádění akcí DML.
- [OF column_n] - Jedná se o zmínku názvu sloupce, který má být změněn.
- [ON table_n] - To je za zmínku název tabulky, který je připojen ke spouštěči.
- [REFERENCE STARÉ JAKO NOVÉ AS N] - Toto je pro odkazování na staré a nové hodnoty příkazem DML jako UPDATE, INSERT nebo DELETE.
- [PRO KAŽDOU ŘADU] - Toto určuje aktivační událost na úrovni řádků, tj. Aktivační událost bude spuštěna pro každý řádek, který je upraven, jinak se aktivační událost aktivuje pouze jednou, když se provede příkaz SQL, který se označuje jako aktivační událost na úrovni tabulky.
- KDY (podmínka) - To dává podmínku pro řádky, pro které by byl spuštěn spouštěč. To platí pouze pro spouštěče na úrovni řádků.
Zvažme znovu tabulku, která je pojmenována STUDENT .
Pojďme nyní vytvořit spouštěč na úrovni řádků pro tabulku STUDENT, který by byl spuštěn příkazem DML jako UPDATE, INSERT nebo DELETE v této tabulce. Spouštěč vypočítá a zobrazí věkový rozdíl mezi aktuální a předchozí hodnotou.
Implementace kódu pro vytvoření spouštěče:
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 výše uvedeného kódu:
Výše uvedený kód má některé důležité vlastnosti. Jsou uvedeny níže:
- Pro spouštěč na úrovni tabulky nejsou k dispozici staré a nové adresy. Tyto odkazy můžeme použít pro spouštěče na úrovni záznamu.
- Pokud chceme použít jiný dotaz ve stejném spouštěči, musíme použít klíčové slovo AFTER jako spouštěč, který může znovu upravit tabulku až po správném použití předchozích úprav.
- Spouštěč popsaný výše se spouští před jakoukoli akcí DELETE, UPDATE nebo INSERT v tabulce. Můžeme však také navrhnout spoušť, která se vyhodí také při jedné operaci ( například, AFTER INSERT, který provede aktivaci vždy, když je vložen záznam pomocí operace INSERT na stole).
Spouštění Spouštění V PL SQL
Chcete-li aktivovat výše uvedený spouštěč, musíme na stole provést jakoukoli operaci DML, jako je DELETE, INSERT nebo UPDATE. Znovu vložíme některé hodnoty do Studentské tabulky pomocí níže uvedeného dotazu:
INSERT INTO STUDENT VALUES (4, 'MARY', 16, 97);
Jakmile je operace INSERT dokončena v tabulce Student, aktivační událost age_changes je popraven.
Výstup kódu dotazu:
Protože je vytvořen nový záznam a předchozí věk není k dispozici, předchozí věk a Věkový rozdíl výpočet je ve výše uvedeném výstupu nulový.
Nyní, pojďme upravit záznam pomocí příkazu UPDATE pomocí níže uvedeného dotazu:
UPDATE student SET age = age + 1 WHERE code = 7;
Jakmile je operace UPDATE dokončena v tabulce Student, aktivační událost age_changes je popraven.
Výstup výše uvedeného dotazu:
NOVÁ A STARÁ doložka
K uložení nové hodnoty pro sloupce tabulky pro spuštění aktivátoru se používá nová klauzule. Používá se ve spouštěcích úrovních záznamu. Stará klauzule se používá k uložení staré hodnoty pro sloupce tabulky pro provedení spouštěče. Používá se také ve spouštěcích úrovních záznamu.
Nová a stará klauzule se tedy používá k zadržení a odkazování na nové a staré hodnoty v těle spouště.
Složený spouštěč
Složená spoušť se používá k definování operací pro všechny časovací body v těle spouště. Poskytuje opatření ke sloučení všech akcí v různých časech v rámci jednoho těla spouštěče.
Níže jsou uvedeny různé časové body:
- ÚROVEŇ PO PROHLÁŠENÍ
- PŘED ŘADOU úroveň
- ÚROVEŇ PO ŘADĚ
- ÚROVEŇ PŘED PROHLÁŠENÍM
Zakázat a povolit spouštění
Můžeme aktivovat a deaktivovat spouštěč pomocí příkazu DDL ALTER.
Syntax:
ALTER TRIGGER trigger_n [ENABLE|DISABLE];
Zde trigger_n je název spouštěče, který chceme povolit nebo zakázat.
Nyní vypneme spoušť pomocí níže uvedeného dotazu:
ALTER TRIGGER STUDENT_DETAILS DISABLE;
Výstup kódu dotazu:
Nyní povolíme stejný spouštěč pomocí níže uvedeného dotazu:
ALTER TRIGGER STUDENT_DETAILS ENABLE;
Výstup kódu dotazu:
Často kladené otázky a odpovědi
Otázka č. 1) Kolik typů spouštěčů existuje v PL SQL?
Odpovědět: V PL / SQL existují dva typy spouštěčů. Jsou to spouštěč na úrovni řádků a spouštěč na úrovni výpisu.
Otázka 2) Který typ spouštěče používá starou a novou kvalifikaci?
pokud je provoz na webu slabý, který testovací přístup bude fungovat nejlépe
Odpovědět: Starý a nový kvalifikátor lze použít pouze se spouštěči na úrovni řádků. Nejsou kompatibilní se spouštěči na úrovni výpisu.
Otázka č. 3) Jaký je rozdíl mezi spouštěcím novým a starým spouštěcím?
Odpovědět: Nový spouštěč poskytuje seznam nových verzí objektů záznamu. Starý spouštěč poskytuje seznam starých verzí objektů záznamu.
Otázka č. 4) Co je spouštěč na úrovni řádků v PL SQL?
Odpovědět: Spouštěč na úrovni řádků se aktivuje pro řádek pouze jednou kvůli události. Například, pokud je odstranění považováno za spouštěcí událost pro tabulku, příkaz mazání ovlivňuje dva řádky, pak se aktivační událost spustí dvakrát.
Otázka č. 5) Co je spouštěč? Vysvětlete to na příkladu.
Odpovědět: Spouštěč je uložená procedura, která se ve výchozím nastavení aktivuje, pokud dojde k incidentu v databázi. Například, pokud je řádek vložen do tabulky nebo upravujeme některé hodnoty v tabulce.
Otázka č. 6) Jaké jsou následné spouštěče?
Odpovědět: After triggery jsou aktivovány po provedení příkazu DML, ale před potvrzením do databáze. Je také schopen vrátit svoji akci zpět.
Závěr
V tomto tutoriálu jsme probrali několik základních konceptů Triggerů v PL SQL, které jsou nezbytné pro jejich použití při programování. Pokryli jsme následující témata uvedená níže:
- Spouštěče.
- Typy spouštěčů.
- Různé operace se spouštěči.
<< PREV Tutorial | DALŠÍ výukový program >>