PostgreSQL

PostgreSQL Stvori okidač nakon INSERT / UPDATE / DELETE

PostgreSQL Stvori okidač nakon INSERT / UPDATE / DELETE
Kad god se definirana radnja promjene (SQL INSERT, UPDATE, DELETE ili TRUNCATE deklaracija) provodi na definiranoj tablici, okidač je niz skupova događaja koji se izvršavaju automatski. Okidači se mogu koristiti za nametanje poslovnih pravila, provjeru autentičnosti ulaznih podataka i održavanje revizijskog traga. SQL okidači implementirani su prema SQL formatu. Uključuje strukture korištene u nekoliko programskih jezika koje vam omogućuju deklariranje lokalnih varijabli, nadgledanje tijeka procesa deklaracijama, dodjeljivanje ishoda izraza varijablama i rukovanje pogreškama. Nadalje, nakon što konstruirate okidač za nešto, poput tablice, okidač se odmah uklanja čim se tablica ukloni. Pogledat ćemo kako PostgreSQL okidači funkcioniraju u ovom segmentu.

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.

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.

Kako koristiti Xdotool za poticanje klikova i pritiska miša u Linuxu
Xdotool je besplatni alat za naredbene retke otvorenog koda za simulaciju klikova mišem i pritiska tipki. Ovaj će članak pokrivati ​​kratki vodič o ko...
Top 5 ergonomskih proizvoda za računalni miš za Linux
Uzrokuje li dugotrajno korištenje računala bolove u zapešću ili prstima? Patite li od ukočenih zglobova i stalno se morate rukovati? Osjećate li goruć...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...