Sintaksa:
Sledi preprosta sintaksa za generiranje sprožilca:
>> USTVARI TRIGGER ime_prožilca [PRED | PO | NAMESTO] ime-dogodka NA ime_tabele [---- Sprožilna logika];Tu je razlaga zgornje splošne poizvedbe.
- Ime sprožilca: Ime sprožilca
- PRED, PO, NAMESTO: Izrazi, ki določajo, kdaj bo sprožilec aktiven
- Ime_dogodka: Naslov dogodka, ki bi lahko sprožil sprožilec (to je lahko, INSERT, UPDATE ali DELETE)
- Ime tabele: Določa tabelo, na podlagi katere bo zgrajen sprožilec
Če želite na kratko razumeti koncept sprožilca, iz aplikacij zaženite lupino PostgreSQL. Če želite delati na drugem strežniku, zamenjajte strežnik ali pa pritisnite tipko Enter na tipkovnici. Dodajte ime baze podatkov, s katero želite delati, drugače jo pustite, kot je, in tapnite enter. Kot lahko vidite, trenutno privzeto delamo na vratih 5432; lahko tudi spremenite. Po tem navedite uporabniško ime, ki ni Postgres, če želite delati z drugim uporabnikom, ali pa ga pustite prazno in pritisnite gumb Enter. Zdaj je vaša ukazna lupina pripravljena za uporabo.
TRIGGER ob ukazu INSERT
Oglejmo si primer sprožilca, ko je bil ukaz INSERT uporabljen kot dogodek sprožilca. Za to moramo ustvariti dve novi tabeli, npr.g., „Zaposliti“ in „revidirati“. Tabela "zaposli" bo vsebovala osebne evidence zaposlenih iz določenega podjetja, tabela "revizija" pa informacije o tem, kdaj so se zaposleni pridružili podjetju. Poizvedbe za ustvarjanje tabel so podane spodaj.
>> USTVARI MIZO zaposli (ID INTEGER NOT NULL PRIMARNI KLJUČ, Ime VARCHAR (100) NOT NULL, Age VARCHAR (100) NOT NULL, Plača VARCHAR (100) NOT NULL);>> USTVARI TABELO revizije (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);
Ustvariti morate postopek, ki se bo samodejno izvedel ali deloval, ko bo poklican sprožilec. Uporabljen bo v naslednjem ukazu CREATE TRIGGER. Iz spodnjega ukaza lahko dobite idejo, da smo ustvarili postopek “auditlogfunc ()”, ki bo vrnil sprožilec kot spremenljivko “$ examp_table $”. Funkcija se začne s stavkom BEGIN, čemur sledi stavek INSERT. Ta stavek INSERT vstavi samodejni id in trenutni časovni datum z uporabo vgrajene funkcije v tabelo "audit" in vrne ta rezultat TRIGGER.
Čas je, da z ukazom CREATE TRIGGER ustvarite TRIGGER. Ustvarimo sprožilec z imenom "emp_trig" v tabeli "zaposli". Klavzula AFTER INSERT ON pomeni, da bo ta sprožilec deloval šele po izvedbi ukaza za vstavljanje. ZA VSAK RED pomeni, da bo ob sprožitvi vsakega ukaza INSERT ta sprožilec poklical in izvedel postopek »auditlogfunc ()«, ustvarjen tik.
>> USTVARI TRIGGER emp_trig PO VSTAVITVI VKLJUČI zaposli ZA VSAK REDNI IZVEDBENI POSTOPEK auditlogfunc ();
Čas je, da v tabelo vstavimo nekaj podatkov "zaposli". Izvedite spodnji ukaz INSERT v lupini.
>> INSERT INTO zaposli (ID, ime, starost, plača) VREDNOSTI ('1', 'Paul', '34', '60000');
Oglejte si tabelo "zaposli". Podatki so bili uspešno dodani z ukazom INSERT.
Zdaj si oglejte tabelo "revizija". Vidite, posodobljen je tudi zaradi sprožilca “emp_trig” in auditlogfunc ().
TRIGGER ob ukazu UPDATE
Zdaj si bomo ogledali primer sprožilca, ki uporablja ukaz UPDATE kot dogodek sprožilca. Ponovno moramo ustvariti nov postopek z drugačnim imenom »posodobitev«, kot je predstavljeno na sliki. Ta postopek bo tudi vključil zapise v tabelo "revizija" na poziv.
Zdaj ustvarite nov sprožilec z imenom "update_emp" z uporabo ukaza CREATE TRIGGER. To bo delovalo šele po izvedbi poizvedbe UPDATE na tabeli zaposli in bo postopek imenovalo »update«.
Posodobite tabelo »zaposli«, tako da njen ID nastavite na »2«.
Pridobite zapise tabele "zaposli", da si ogledate spremembe, kot je priloženo spodaj.
Kot lahko vidite na tabeli "revizija", je bila s posodobitvijo tabele "zaposli" reorganizirana.
TRIGGER ob ukazu DELETE
Odprite pgAdmin 4 iz aplikacij za delo na GUI PostgreSQL. Pod shemo "test" boste našli seznam tabel. Ustvarite novo tabelo "emp" in isto tabelo "revizija".
Tokrat bomo prek ukaza DELETE poklicali ukaz sprožilca. Spodaj je tabela "emp" z nekaj zapisi.
Tu je revizijska tabela s prejšnjima dvema posodobitvama.
Ustvarite postopek z imenom "Del ()", da sprožite vstavljanje v tabelo "audit" po brisanju zapisov iz tabele "emp".
Ustvarite sprožilec "del_trig" z uporabo poizvedbe CREATE TRIGGER. Ta sprožilec bo izvedel postopek “Del”, ko bo v tabeli “emp” izveden nek člen DELETE.
Izbrišemo zapis iz tabele "emp", kjer je "id" zaposlenega "5". Izbriše eno vrstico iz tabele "emp".
Pridobite zapise tabele "emp" in si jih oglejte. Ogledate si lahko, da je bila vrstica odstranjena, kjer je bil »id« »5«.
Zdaj izvlecite zapise tabele “audit” in opazili boste, da so bili posodobljeni, ker je bila na tabeli “emp” izvedena operacija DELETE.
Zaključek:
Naredili smo skoraj vse bistvene primere za razumevanje koncepta TRIGGER med izvajanjem operacij INSERT, UPDATE in DELETE.