Što su Postgresql okidači?
Okidač PostgreSQL funkcija je koja se automatski pokreće kada se događaj baze podataka dogodi na objektu baze podataka. Na primjer, stol.
Primjeri događaja baze podataka koji mogu aktivirati okidač uključuju INSERT, UPDATE, DELETE itd. Štoviše, kada kreirate okidač za tablicu, okidač će se automatski spustiti kad se ta tablica izbriše.
U ovom vodiču za PostgreSQL naučit ćete sljedeće:
- Što su Postgresql okidači?
- Kako se okidač koristi u POSRGREQL-u?
- Stvaranje okidača
- Korištenje pgAdmin
- Ispuštanje okidača
Kako se okidač koristi u POSRGREQL-u?
Okidač se može označiti operatorom ZA SVAKI RED tijekom njegovog stvaranja. Takav će se okidač pozvati jednom za svaki redak modificiran operacijom. Okidač se također može označiti operatorom ZA SVAKU IZJAVU tijekom njegovog stvaranja. Ovaj će se okidač izvršiti samo jednom za određenu operaciju.
Stvaranje okidača
Da bismo stvorili okidač, koristimo funkciju CREATE TRIGGER. Evo sintakse funkcije:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-nameON table-name[-- Trigger logic];
Ime okidača je ime okidača.
PRIJE, NAKON I UMJESTO su ključne riječi koje određuju kada će se aktivirati okidač.
Naziv događaja je naziv događaja zbog kojeg će se aktivirati okidač. To može biti INSERT, UPDATE, DELETE itd.
Ime tablice naziv je tablice na kojoj će se kreirati okidač.
Ako će se okidač kreirati za INSERT operaciju, moramo dodati parametar ime stupca ON.
Sljedeća sintaksa to pokazuje:
CREATE TRIGGER trigger-name AFTER INSERT ON column-nameON table-name[-- Trigger logic];
Na primjer:
Koristit ćemo donju tablicu cijena:
Cijena:
Stvorimo još jednu tablicu, Price_Audits, gdje ćemo evidentirati promjene napravljene u tablici Price:
CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL);
Sada možemo definirati novu funkciju koja se zove auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$BEGININSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);RETURN NEW;END;$my_table$ LANGUAGE plpgsql;
Gornja funkcija umetnut će zapis u tablicu Price_Audits uključujući novi ID retka i vrijeme stvaranja zapisa.
Sad kad imamo funkciju okidača, trebali bismo je vezati za našu tablicu cijena. Okidaču ćemo dati ime price_trigger. Prije stvaranja novog zapisa automatski će se aktivirati funkcija okidača za bilježenje promjena. Evo okidača:
CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc();
Umetnimo novi zapis u tablicu cijena:
INSERT INTO PriceVALUES (3, 400);
Sad kad smo umetnuli zapis u tablicu cijena, zapis bi također trebao biti umetnut u tablicu Price_Audit. To će biti rezultat okidača koji smo stvorili na tablici cijena. Provjerimo ovo:
SELECT * FROM Price_Audits;
Ovo će vratiti sljedeće:
Okidač je uspješno radio.
Okidači uvrštavanja
Svi okidači koje kreirate u PostgreSQL-u pohranjeni su u tablici pg_trigger. Da biste vidjeli popis okidača koje imate u bazi podataka, upitajte tablicu pokretanjem naredbe SELECT kako je prikazano dolje:
SELECT tgname FROM pg_trigger;
Ovo vraća sljedeće:
Stupac tgname tablice pg_trigger označava ime okidača.
Okidači za ispuštanje
Za ispuštanje okidača PostgreSQL koristimo izraz DROP TRIGGER sa sljedećom sintaksom:
DROP TRIGGER [IF EXISTS] trigger-nameON table-name [ CASCADE | RESTRICT ];
Parametar ime okidača označava naziv okidača koji se želi izbrisati.
Naziv tablice označava naziv tablice iz koje će se okidač izbrisati.
Klauzula IF EXISTS pokušava izbrisati okidač koji postoji. Ako pokušate izbrisati okidač koji ne postoji bez upotrebe klauzule IF EXISTS, dobit ćete pogrešku.
Opcija CASCADE pomoći će vam da automatski ispustite sve objekte koji ovise o okidaču.
Ako koristite opciju RESTRICT, okidač se neće izbrisati ako o tome ovise objekti.
Na primjer:
Da bismo izbrisali okidač nazvan example_trigger na tablici Price, izvodimo sljedeću naredbu:
Za ispuštanje okidača nazvanog example_trigger na tablici Company, pokrenite sljedeću naredbu:
DROP TRIGGER example_trigger IF EXISTSON Company;
Korištenje pgAdmin
Sada da vidimo kako su se sve tri radnje izvršile pomoću pgAdmina.
Izrada okidača
Da biste to postigli putem pgAdmina, učinite ovo:
Korak 1) Prijavite se na svoj pgAdmin račun.
Korak 2)
- Na navigacijskoj traci s lijeve strane kliknite Baze podataka.
- Pritisnite Demo.
Korak 3) Da biste stvorili tablicu Price_Audits, upišite uređivač upita:
CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL)
Korak 4) Kliknite gumb Izvrši.
Korak 5) Pokrenite sljedeći kod za definiranje funkcije auditfunc:
CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$BEGININSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);RETURN NEW;END;$my_table$ LANGUAGE plpgsql
Korak 6) Pokrenite sljedeći kôd za stvaranje okidača price_trigger:
CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc()
Korak 7)
- Pokrenite sljedeću naredbu za umetanje novog zapisa u tablicu cijena:
INSERT INTO PriceVALUES (3, 400)
- Pokrenite sljedeću naredbu da provjerite je li zapis ubačen u tablicu Price_Audits:
SELECT * FROM Price_Audits
Ovo bi trebalo vratiti sljedeće:
Korak 8) Provjerimo sadržaj tablice Price_Audits:
Okidači uvrštavanja
Korak 1) Pokrenite sljedeću naredbu za provjeru okidača u vašoj bazi podataka:
SELECT tgname FROM pg_trigger
Ovo vraća sljedeće:
Ispuštanje okidača
Za ispuštanje okidača nazvanog example_trigger na tablici Company, pokrenite sljedeću naredbu:
DROP TRIGGER example_trigger IF EXISTSON Company
Sažetak:
- Okidač PostgreSQL odnosi se na funkciju koja se automatski pokreće kada se događaj baze podataka dogodi na objektu baze podataka, poput tablice.
- Primjeri takvih događaja baze podataka uključuju INSERT, UPDATE, DELETE itd.
- Okidač postoji samo za vrijeme trajanja objekta baze podataka za koji je stvoren.
- Ako se objekt baze podataka izbriše, okidač će se također izbrisati.
- Okidači PostgreSQL kreiraju se pomoću izraza CREATE TRIGGER.
- Svaki okidač povezan je s funkcijom koja navodi što će okidač učiniti kada se pozove.
Preuzmite bazu podataka korištenu u ovom vodiču