Sprožilec PostgreSQL: Ustvari, spusti primer

Kazalo:

Anonim

Kaj so sprožilci Postgresql?

Sprožilec PostgreSQL je funkcija, ki se samodejno sproži, ko se dogodek baze podatkov zgodi na objektu baze podatkov. Na primer miza.

Primeri dogodkov baze podatkov, ki lahko aktivirajo sprožilec, vključujejo INSERT, UPDATE, DELETE itd. Poleg tega, ko ustvarite sprožilec za tabelo, bo sprožilec samodejno spuščen, ko bo tabela izbrisana.

V tej vadnici PostgreSQL boste izvedeli naslednje:

  • Kaj so sprožilci Postgresql?
  • Kako se Trigger uporablja v POSRGREQL?
  • Ustvarjanje sprožilca
  • Uporaba pgAdmin
  • Spuščanje sprožilcev

Kako se Trigger uporablja v POSRGREQL?

Sprožilec je med njegovim ustvarjanjem lahko označen z operatorjem ZA VSAK VRST. Tak sprožilec bo poklican enkrat za vsako vrstico, spremenjeno z operacijo. Sprožilec je lahko med njegovim ustvarjanjem označen tudi z operatorjem ZA VSAKO IZJAVO. Ta sprožilec se bo izvedel samo enkrat za določeno operacijo.

Ustvarjanje sprožilca

Za ustvarjanje sprožilca uporabimo funkcijo USTVARI TRIGGER. Tu je sintaksa funkcije:

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

Ime sprožilca je ime sprožilca.

BEFORE, AFTER in NAMESTO OF so ključne besede, ki določajo, kdaj se bo sprožil sprožilec.

Ime dogodka je ime dogodka, zaradi katerega se bo sprožil sprožilec. To je lahko INSERT, UPDATE, DELETE itd.

Ime tabele je ime tabele, na kateri naj se ustvari sprožilec.

Če naj se sproži sprožilec za operacijo INSERT, moramo dodati parameter ime stolpca ON.

Naslednja sintaksa to dokazuje:

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

Na primer:

Uporabili bomo spodnjo tabelo cen:

Cena:

Ustvarimo novo tabelo, Price_Audits, kjer bomo zabeležili spremembe v tabeli Price:

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

Zdaj lahko definiramo novo funkcijo z imenom 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;

Zgornja funkcija bo v tabelo vstavila zapis v revizijo Price_Audits, vključno z novim ID-jem vrstice in časom, ko je zapis ustvarjen.

Zdaj, ko imamo funkcijo sprožilca, jo moramo povezati s svojo tabelo cen. Sprožilcu bomo dali ime price_trigger. Preden se ustvari nov zapis, se samodejno sproži funkcija sprožilca za beleženje sprememb. Tu je sprožilec:

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

V tabelo Cena vstavimo nov zapis:

INSERT INTO PriceVALUES (3, 400);

Zdaj, ko smo v tabelo vstavili zapis, je treba v tabelo Price_Audit vstaviti tudi zapis. To bo posledica sprožilca, ki smo ga ustvarili v tabeli Cena. Naj preverimo to:

SELECT * FROM Price_Audits;

To bo vrnilo naslednje:

Sprožilec je deloval uspešno.

Sprožilci s seznama

Vsi sprožilci, ki jih ustvarite v PostgreSQL, so shranjeni v tabeli pg_trigger. Če si želite ogledati seznam sprožilcev, ki jih imate v bazi, poizvedite tabelo tako, da zaženete ukaz SELECT, kot je prikazano spodaj:

SELECT tgname FROM pg_trigger;

To vrne naslednje:

Stolpec tgname tabele pg_trigger označuje ime sprožilca.

Sprožilci spuščanja

Če želite spustiti sprožilec PostgreSQL, uporabimo stavek DROP TRIGGER z naslednjo sintakso:

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

Parameter ime sprožilca označuje ime sprožilca, ki ga je treba izbrisati.

Ime tabele označuje ime tabele, iz katere naj se sprožilec sproži.

Klavzula IF EXISTS poskuša izbrisati obstoječi sprožilec. Če poskusite izbrisati sprožilec, ki ne obstaja, ne da bi uporabili klavzulo IF EXISTS, se prikaže napaka.

Možnost CASCADE vam bo pomagala samodejno spustiti vse predmete, ki so odvisni od sprožilca.

Če uporabite možnost RESTRICT, sprožilec ne bo izbrisan, če so predmeti odvisni od njega.

Na primer:

Če želite izbrisati sprožilec z imenom example_trigger v tabeli Price, zaženimo naslednji ukaz:

Če želite spustite sprožilec z imenom example_trigger v tabeli Company, zaženite naslednji ukaz:

DROP TRIGGER example_trigger IF EXISTSON Company;

Uporaba pgAdmin

Zdaj pa poglejmo, kako so bila vsa tri dejanja izvedena s pomočjo pgAdmin.

Ustvarjanje sprožilcev

Če želite to storiti s pomočjo pgAdmin, naredite to:

Korak 1) Prijavite se v svoj račun pgAdmin.

2. korak)

  1. V navigacijski vrstici na levi strani kliknite Baze podatkov.
  2. Kliknite Demo.

3. korak) Če želite ustvariti tabelo Price_Audits, vnesite urejevalnik poizvedb:

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

Korak 4) Kliknite gumb Izvedi.

Korak 5) Za določitev funkcije auditfunc zaženite naslednjo kodo:

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) Zaženite naslednjo kodo, da ustvarite sprožilec price_trigger:

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

7. korak)

  1. Zaženite naslednji ukaz, da v tabelo Cena vstavite nov zapis:
    INSERT INTO PriceVALUES (3, 400)
  2. Zaženite naslednji ukaz, da preverite, ali je bil zapis vstavljen v tabelo Price_Audits:
    SELECT * FROM Price_Audits

    To bi moralo vrniti naslednje:

Korak 8) Preverimo vsebino tabele Price_Audits:

Sprožilci s seznama

1. korak: Za preverjanje sprožilcev v bazi podatkov zaženite naslednji ukaz:

SELECT tgname FROM pg_trigger

To vrne naslednje:

Spuščanje sprožilcev

Če želite spustite sprožilec z imenom example_trigger v tabeli Company, zaženite naslednji ukaz:

DROP TRIGGER example_trigger IF EXISTSON Company

Povzetek:

  • Sprožilec PostgreSQL se nanaša na funkcijo, ki se samodejno sproži, ko se dogodek baze podatkov zgodi na objektu baze podatkov, na primer tabeli.
  • Primeri takšnih dogodkov v zbirki podatkov vključujejo INSERT, UPDATE, DELETE itd.
  • Sprožilec obstaja le v življenjski dobi predmeta baze podatkov, za katerega je bil ustvarjen.
  • Če je objekt zbirke podatkov izbrisan, bo izbrisan tudi sprožilec.
  • Sprožilci PostgreSQL se ustvarijo z uporabo stavka CREATE TRIGGER.
  • Vsak sprožilec je povezan s funkcijo, ki navaja, kaj bo sprožilec sprožil, ko ga pokličete.

Prenesite zbirko podatkov, uporabljeno v tej vadnici