PostgreSQL Okidači: Stvaranje, popis i ispuštanje s primjerom

U čemu je Trigger PostgreSQL?

A PostgreSQL Okidač je funkcija koja se pokreće automatski kada se dogodi događaj baze podataka 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 automatski biti ispušten kada se ta tablica izbriše.

Kako se Trigger koristi u PostgreSQL?

Okidač se može označiti operatorom FOR EACH ROW tijekom njegove izrade. Takav okidač bit će pozvan jednom za svaki redak koji je izmijenjen operacijom. Okidač se također može označiti operatorom FOR EACH STATEMENT tijekom njegove izrade. Ovaj okidač će se izvršiti samo jednom za određenu operaciju.

PostgreSQL Izradi okidač

Za izradu okidača koristimo funkciju CREATE TRIGGER. Ovo je sintaksa funkcije:

CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name  
ON table-name  
[  
 -- Trigger logic  
];

Naziv okidača je naziv okidača.

BEFORE, AFTER i INSTEAD OF ključne su riječi koje određuju kada će se okidač pozvati.

Event-name je naziv događaja koji će uzrokovati pozivanje okidača. Ovo može biti INSERT, AŽURIRAJ, IZBRIŠI itd.

Ime tablice je ime tablice na kojoj se okidač treba kreirati.

Ako okidač treba stvoriti za operaciju INSERT, moramo dodati ON parametar imena stupca.

Sljedeća sintaksa to pokazuje:

CREATE TRIGGER trigger-name AFTER INSERT ON column-name  
ON table-name  
[  
 -- Trigger logic
];

PostgreSQL Stvori primjer okidača

Koristit ćemo donju tablicu cijena:

Cijena:

PostgreSQL Izradi okidač

Kreirajmo još jednu tablicu, Price_Audits, gdje ćemo zabilježiti promjene napravljene u tablici cijena:

CREATE TABLE Price_Audits (
   book_id INT NOT NULL,
    entry_date text NOT NULL
);

Sada možemo definirati novu funkciju pod nazivom auditfunc:

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$
   BEGIN
      INSERT 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.

Sada kada imamo funkciju okidača, trebali bismo je povezati s našom tablicom cijena. Okidaču ćemo dati naziv price_trigger. Prije nego što se stvori novi zapis, automatski će se pozvati funkcija okidača za zapisivanje promjena. Evo okidača:

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc();

Umetnimo novi zapis u tablicu cijena:

INSERT INTO Price 
VALUES (3, 400);

Sada kada smo umetnuli zapis u tablicu Price, 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:

PostgreSQL Izradi okidač

Okidač je uspješno radio.

Postgres List Trigger

Svi okidači koje stvorite u PostgreSQL pohranjeni su u tablici pg_trigger. Da biste vidjeli popis okidača koje imate na baza podataka, upitajte tablicu izvođenjem naredbe SELECT kao što je prikazano u nastavku:

SELECT tgname FROM pg_trigger;

Ovo vraća sljedeće:

Postgres List Trigger

Stupac tgname tablice pg_trigger označava naziv okidača.

Postgres Drop Trigger

Ispustiti a PostgreSQL okidač, koristimo naredbu DROP TRIGGER sa sljedećom sintaksom:

DROP TRIGGER [IF EXISTS] trigger-name 
ON table-name [ CASCADE | RESTRICT ];

Parametar trigger-name označava naziv okidača koji se želi izbrisati.

Naziv tablice označava naziv tablice iz koje se okidač želi obrisati.

Klauzula IF EXISTS pokušava izbrisati okidač koji postoji. Ako pokušate izbrisati okidač koji ne postoji bez korištenja 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 objekti ovise o njemu.

Na primjer:

Da bismo izbrisali okidač pod nazivom example_trigger u tablici Cijena, pokrećemo sljedeću naredbu:

Da biste ispustili okidač pod nazivom example_trigger na tablici Tvrtka, pokrenite sljedeću naredbu:

DROP TRIGGER example_trigger IF EXISTS
ON Company;

Koristeći pgAdmin

Sada da vidimo kako su sve tri radnje izvedene pomoću pgAdmin-a.

Kako stvoriti okidač u PostgreSQL koristeći pgAdmin

Evo kako možete stvoriti okidač u Postgresu koristeći pgAdmin:

Korak 1) Prijavite se na svoj pgAdmin račun

Otvorite pgAdmin i prijavite se na svoj račun koristeći svoje vjerodajnice

Korak 2) Napravite demo bazu podataka

  1. Na navigacijskoj traci s lijeve strane kliknite Databases.
  2. Pritisnite Demo.

Stvori okidač u PostgreSQL koristeći pgAdmin

Korak 3) Upišite upit

Da biste kreirali tablicu Price_Audits, upišite upit u editor:

CREATE TABLE Price_Audits (
   book_id INT NOT NULL,
    entry_date text NOT NULL
)

Korak 4) Izvršite upit

Pritisnite gumb Izvrši

Stvori okidač u PostgreSQL koristeći pgAdmin

Korak 5) Pokrenite kod za auditfunc

Pokrenite sljedeći kod da definirate funkciju auditfunc:

CREATE OR REPLACE FUNCTION auditfunc() RETURNS TRIGGER AS $my_table$
   BEGIN
      INSERT INTO Price_Audits(book_id, entry_date) VALUES (new.ID, current_timestamp);
      RETURN NEW;
   END;
$my_table$ LANGUAGE plpgsql

Korak 6) Pokrenite kod za stvaranje okidača

Pokrenite sljedeći kod da biste stvorili okidač price_trigger:

CREATE TRIGGER price_trigger AFTER INSERT ON Price
FOR EACH ROW EXECUTE PROCEDURE auditfunc()

Korak 7) Umetnite novi zapis

  1. Pokrenite sljedeću naredbu za umetanje novog zapisa u tablicu cijena:
    INSERT INTO Price
    VALUES (3, 400)
  2. Pokrenite sljedeću naredbu da provjerite je li zapis umetnut u tablicu Price_Audits:
    SELECT * FROM Price_Audits

    Ovo bi trebalo vratiti sljedeće:

Stvori okidač u PostgreSQL koristeći pgAdmin

Korak 8) Provjerite sadržaj tablice

Provjerimo sadržaj tablice Price_Audits:

Okidači popisa pomoću pgAdmin-a

Korak 1) Pokrenite sljedeću naredbu da provjerite okidače u svojoj bazi podataka:

SELECT tgname FROM pg_trigger

Ovo vraća sljedeće:

Okidači popisa pomoću pgAdmin-a

Ispuštanje okidača pomoću pgAdmin-a

Da biste ispustili okidač pod nazivom example_trigger na tablici Tvrtka, pokrenite sljedeću naredbu:

DROP TRIGGER example_trigger IF EXISTS
ON Company

Rezime

  • A PostgreSQL okidač se odnosi na funkciju koja se automatski pokreće kada se dogodi događaj baze podataka na objektu baze podataka, kao što je tablica.
  • Primjeri takvih događaja baze podataka uključuju INSERT, UPDATE, DELETE itd.
  • Okidač postoji samo tijekom trajanja objekta baze podataka za koji je stvoren.
  • Ako se objekt baze podataka izbriše, okidač će također biti izbrisan.
  • PostgreSQL okidači se kreiraju pomoću naredbe 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