Sintaksa:
Slijedi jednostavna sintaksa za generiranje okidača:
>> IZRADI TRIGGER ime_utrcaja [PRIJE | NAKON | UMJESTO] naziv događaja NA naziv_tabele [---- Okidačka logika];Evo objašnjenja gornjeg općeg upita.
- Ime okidača: Naziv okidača
- PRIJE, NAKON, UMJESTO: Pojmovi koji odlučuju kada će okidač biti aktivan
- Naziv događaja: Naslov događaja koji bi mogao pokrenuti okidač (ovo može biti, INSERT ili UPDATE ili DELETE)
- Naziv stola: Određuje tablicu na kojoj će se konstruirati okidač
Da biste nakratko razumjeli koncept okidača, pokrenite PostgreSQL ljusku iz aplikacija. Promijenite poslužitelj ako želite raditi na drugom poslužitelju ili pritisnite tipku enter s tipkovnice. Dodajte ime baze podataka na kojem želite raditi, u suprotnom ga ostavite kakvo jest i dodirnite enter. Kao što vidite, trenutno radimo na portu 5432 kao zadani; možete ga i promijeniti. Nakon toga navedite korisničko ime osim Postgresa ako želite raditi s drugim korisnikom ili ga ostavite praznim i pritisnite tipku Enter. Sada je vaša naredbena ljuska spremna za upotrebu.
TRIGGER po naredbi INSERT
Pogledajmo primjer okidača kada se naredba INSERT koristi kao događaj okidača. Za to moramo stvoriti dvije nove tablice, npr.g., „Zaposliti“ i „revidirati“. Tablica "zaposliti" sadržavat će osobne evidencije zaposlenika iz određene tvrtke, a tablica "revizija" sadržavat će informacije o tome kada su se zaposlenici pridružili tvrtki. Upiti za izradu tablica dati su u nastavku.
>> STVORI TABELU zaposli (ID INTEGER NULL PRIMARNI KLJUČ, Ime VARCHAR (100) NOT NULL, Age VARCHAR (100) NOT NULL, Plaća VARCHAR (100) NOT NULL);>> STVARI TABLICU revizija (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);
Morate stvoriti proceduru koja će se automatski izvršiti ili raditi kad se pozove okidač. Upotrijebit će se u sljedećoj naredbi CREATE TRIGGER. Iz naredbe u nastavku možete dobiti ideju da smo kreirali proceduru "auditlogfunc ()", koja će vratiti okidač kao varijablu "$ examp_table $". Funkcija započinje klauzulom BEGIN, nakon čega slijedi izraz INSERT. Ova izjava INSERT ubacuje automatski id i trenutni datum-vrijeme koristeći ugrađenu funkciju u tablicu "revizija" i vraća rezultat u TRIGGER.
Vrijeme je da generirate TRIGGER pomoću naredbe CREATE TRIGGER. Stvaramo okidač nazvan "emp_trig" na tablici "zaposli". Klauzula AFTER INSERT ON znači da će ovaj okidač raditi samo nakon izvršavanja naredbe za umetanje. ZA SVAKI RED znači da će nakon izvršavanja svake naredbe INSERT ovaj okidač pozvati i izvršiti postupak "auditlogfunc ()" stvoren neposredno prije.
>> IZRADI TRIGGER emp_trig NAKON UMETANJA UKLJUČI zaposliti ZA SVAKI RED IZVRŠENOG POSTUPKA auditlogfunc ();
Vrijeme je da u tablicu ubacite neke podatke "zaposli". Izvršite donju naredbu INSERT u ljusci.
>> INSERT INTO zaposliti (ID, ime, dob, plaća) VRIJEDNOSTI ('1', 'Paul', '34', '60000');
Pogledajte tablicu "zaposliti". Podaci su uspješno dodani naredbom INSERT.
Sada uvidite tablicu "revizije". Možete vidjeti, ažurira se i zbog okidača "emp_trig" i auditlogfunc ().
TRIGGER nakon naredbe UPDATE
Sada ćemo gledati primjer okidača koji koristi naredbu UPDATE kao događaj okidača. Moramo ponovno stvoriti novi postupak s različitim nazivom "update" kako je prikazano na slici. Ovaj postupak također će umetnuti zapise u tablicu 'revizije' na poziv.
Sada stvorite novi okidač pod nazivom "update_emp" pomoću naredbe CREATE TRIGGER. To će raditi samo nakon izvršenja UPDATE upita na tablici zaposliti i postupak će nazvati "update".
Ažurirajte tablicu "zaposliti" tako da joj ID postavite na "2".
Dohvatite zapise tablice "zaposliti" da biste vidjeli promjene kako su dolje dodate.
Kao što možete vidjeti na tablici "revizija", ona je reorganizirana s ažuriranjem tablice "zapošljavanje".
TRIGGER po naredbi DELETE
Otvorite pgAdmin 4 iz aplikacija za rad na GUI PostgreSQL. Pod shemom "test" otkrit ćete popis tablica. Stvorite novu tablicu "emp" i istu tablicu "revizije".
Ovoga puta pozvat ćemo naredbu okidača naredbom DELETE. Ispod je tablica "emp" s nekim zapisima.
Evo tablice revizije s prethodna dva ažuriranja.
Stvorite proceduru pod nazivom "Del ()" da biste pokrenuli umetanje u tablicu "audit" nakon brisanja zapisa iz tablice "emp".
Stvorite okidač "del_trig" pomoću upita CREATE TRIGGER. Ovaj će okidač izvršiti postupak "Del" kada će se na tablici "emp" izvršiti neka klauzula DELETE.
Izbrišimo zapis iz tablice "emp" gdje je "id" zaposlenika "5". Izbrisat će jedan redak iz tablice "emp".
Dohvatite zapise tablice "emp" i pogledajte ih. Možete vidjeti da je redak uklonjen tamo gdje je "id" bio "5".
Sada izvucite zapise tablice "audit" i primijetit ćete da su ažurirani jer je izvedena operacija DELETE na tablici "emp".
Zaključak:
Napravili smo gotovo svaki bitan primjer da bismo razumjeli koncept TRIGGER-a tijekom izvođenja operacija INSERT, UPDATE i DELETE.