Syntax:
Nasleduje jednoduchá syntax na generovanie spúšťača:
>> CREATE TRIGGER trigger_name [BEFORE | AFTER | INSTEAD OF] event-name ON table_name [---- Trigger Logic];Tu je vysvetlenie vyššie uvedeného všeobecného dotazu.
- Názov_spúšťača: Názov spúšťača
- PRED, PO, NAMIESTO: Výrazy, ktoré rozhodujú o tom, kedy bude spúšťač aktívny
- Názov udalosti: Názov udalosti, ktorá by mohla spustiť spúšťač (Môže to byť, či už z INSERT alebo UPDATE alebo DELETE)
- Názov tabuľky: Určuje tabuľku, na ktorej základe bude zostavený spúšťač
Aby ste stručne pochopili koncept spúšťača, spustite z aplikácií shell PostgreSQL. Zmeňte server, ak chcete pracovať na inom serveri, alebo stlačte kláves Enter na klávesnici. Pridajte názov databázy, na ktorej chcete pracovať, inak ju nechajte tak, ako je, a klepnite na kláves Enter. Ako vidíte, momentálne pracujeme na porte 5432 ako predvolenom; môžete to tiež zmeniť. Potom zadajte iné používateľské meno ako Postgres, ak chcete pracovať s iným používateľom, alebo ho nechajte nevyplnené a stlačte kláves Enter. Teraz je váš príkazový shell pripravený na použitie.
SPUŠŤ Na príkaz INSERT
Pozrime sa na príklad spúšťača, keď sa ako udalosť spúšťača použil príkaz INSERT. Za týmto účelom musíme vytvoriť dve nové tabuľky, napr.g., „Zamestnať“ a „audit“. Tabuľka „zamestnať“ bude obsahovať osobné záznamy zamestnancov konkrétnej spoločnosti a tabuľka „audit“ bude obsahovať informácie o tom, kedy sa zamestnanci pripojili k spoločnosti. Nižšie sú uvedené dotazy na vytvorenie tabuliek.
>> VYTVORIŤ TABUĽKU zamestnať (ID INTEGER NIE JE NULL PRVÝ KĽÚČ, meno VARCHAR (100) NIE NULL, Vek VARCHAR (100) NIE NULL, Plat VARCHAR (100) NIE NULL);>> CREATE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);
Musíte vytvoriť postup, ktorý sa automaticky vykoná alebo bude fungovať, keď sa vyvolá spúšťač. Použije sa v ďalšom príkaze CREATE TRIGGER. Z nasledujúceho príkazu môžete získať predstavu, že vytvárame procedúru „auditlogfunc ()“, ktorá vráti spúšťač ako premennú „$ examp_table $“. Funkcia začína klauzulou BEGIN, za ktorou nasleduje príkaz INSERT. Tento príkaz INSERT vloží automatické ID a aktuálny dátum a čas pomocou vstavanej funkcie do tabuľky „audit“ a vráti tento výsledok programu TRIGGER.
Je čas vygenerovať SPÚŠŤAČ pomocou príkazu CREATE TRIGGER. Vytvoríme spúšťač s názvom „emp_trig“ v tabuľke „zamestnať“. Klauzula AFTER INSERT ON znamená, že tento spúšťač bude fungovať až po vykonaní príkazu vloženia. FOR EACH ROW znamená pri vykonaní každého príkazu INSERT, tento spúšťač vyvolá a vykoná procedúru „auditlogfunc ()“ vytvorenú tesne pred.
>> CREATE TRIGGER emp_trig PO VLOŽENÍ NA ZAMESTNANÍ PRE KAŽDÝ RIADOK VYKONAŤ POSTUP auditlogfunc ();
Je čas vložiť nejaké údaje do tabuľky „zamestnať“. Vykonajte nižšie uvedený príkaz INSERT v shelli.
>> VLOŽTE DO ZAMESTNANIA (ID, meno, vek, plat) HODNOTY ('1', 'Paul', '34', '60000');
Pozrite sa na tabuľku „zamestnať“. Dáta boli úspešne pridané pomocou príkazu INSERT.
Teraz nahliadnite do tabuľky „audit“. Môžete vidieť, že je aktualizovaný aj kvôli spúšťaču „emp_trig“ a auditlogfunc ().
SPUŠŤ NA príkaz UPDATE
Teraz sa pozrieme na príklad spúšťača používajúceho príkaz UPDATE ako spúšťaciu udalosť. Musíme znova vytvoriť nový postup s iným názvom „aktualizácia“, ako je uvedený na obrázku. Tento postup po vložení tiež vloží záznamy do tabuľky „auditu“.
Teraz vytvorte nový spúšťač s názvom “update_emp” pomocou príkazu CREATE TRIGGER. Toto bude fungovať až po vykonaní dotazu UPDATE na tabuľke Employee a bude sa volať postup „update“.
Aktualizujte tabuľku „zamestnať“ nastavením jej ID na „2“.
Načítajte záznamy z tabuľky „použiť“, aby ste videli zmeny, ako je uvedené nižšie.
Ako môžete vidieť v tabuľke „audit“, pri aktualizácii tabuľky „zamestnať“ došlo k jej reorganizácii.
SPUŠŤ NA príkaz DELETE
Otvorte pgAdmin 4 z aplikácií, aby ste mohli pracovať na GUI PostgreSQL. V schéme „test“ nájdete zoznam tabuliek. Vytvorte novú tabuľku „emp“ a rovnakú tabuľku „audit“.
Tentokrát vyvoláme príkaz trigger príkazom DELETE. Nižšie je uvedená tabuľka „emp“ s niektorými záznamami.
Tu je tabuľka auditu s predchádzajúcimi dvoma aktualizáciami.
Vytvorte postup s názvom „Del ()“ na spustenie vloženia do tabuľky „audit“ po odstránení záznamov z tabuľky „emp“.
Vytvorte spúšťač „del_trig“ pomocou dotazu CREATE TRIGGER. Tento spúšťač vykoná procedúru „Del“, keď sa v tabuľke „emp“ vykoná nejaká klauzula DELETE.
Vymažme záznam z tabuľky „emp“, kde je „id“ zamestnanca „5“. Vymaže jeden riadok z tabuľky „emp“.
Načítajte záznamy z tabuľky „emp“ a pozrite sa na ňu. Môžete si všimnúť, že riadok bol odstránený, kde „id“ bolo „5“.
Teraz extrahujte záznamy tabuľky „audit“ a všimnete si, že bola aktualizovaná, pretože operácia DELETE bola vykonaná v tabuľke „emp“.
Záver:
Urobili sme takmer každý nevyhnutný príklad, aby sme pochopili koncept TRIGGERU pri vykonávaní operácií INSERT, UPDATE a DELETE.