PostgreSQL Päästikud: looge, loetlege ja kukutage näitega
Mis on Trigger sees PostgreSQL?
A PostgreSQL Trigger on funktsioon, mis käivitatakse automaatselt, kui andmebaasiobjektil toimub andmebaasi sündmus. Näiteks laud. Andmebaasisündmuste näited, mis võivad päästiku aktiveerida, hõlmavad INSERT, UPDATE, DELETE jne. Pealegi, kui loote tabeli jaoks päästiku, siis tabeli kustutamisel käivitatakse see automaatselt.
Kuidas Triggerit kasutatakse PostgreSQL?
Päästiku saab selle loomise ajal märkida operaatoriga FOR EACH ROW. Sellist päästikut kutsutakse üks kord iga operatsiooniga muudetud rea jaoks. Päästiku saab selle loomise ajal märkida ka operaatoriga FOR EACH STATEMENT. See päästik käivitatakse konkreetse toimingu jaoks ainult üks kord.
PostgreSQL Loo Trigger
Päästiku loomiseks kasutame funktsiooni CREATE TRIGGER. Siin on funktsiooni süntaks:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
Päästiku nimi on päästiku nimi.
ENNE, PÄRAST ja INSTEEAD OF on märksõnad, mis määravad, millal päästik käivitatakse.
Sündmuse nimi on selle sündmuse nimi, mis käivitab päästiku. See võib olla INSERT, VÄRSKENDAMINE, KUSTUTAMINE jne.
Tabeli nimi on selle tabeli nimi, millel käivitaja luuakse.
Kui päästik luuakse toimingu INSERT jaoks, peame lisama parameetri ON veeru nimi.
Seda näitab järgmine süntaks:
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL Loo käivitaja näide
Kasutame allpool toodud hinnatabelit:
Hind:
Loome teise tabeli Price_Audits, kuhu logime hinnatabelis tehtud muudatused:
CREATE TABLE Price_Audits (
book_id INT NOT NULL,
entry_date text NOT NULL
);
Nüüd saame määratleda uue funktsiooni nimega 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;
Ülaltoodud funktsioon lisab tabelisse Price_Audits kirje, sealhulgas uue rea ID ja kirje loomise aja.
Nüüd, kui meil on käivitamisfunktsioon, peaksime selle siduma oma hinnatabeliga. Anname päästikule nime hind_trigger. Enne uue kirje loomist käivitatakse muudatuste logimiseks automaatselt päästikfunktsioon. Siin on päästik:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
Sisestame hinnatabelisse uue kirje:
INSERT INTO Price VALUES (3, 400);
Nüüd, kui oleme hinna tabelisse kirje sisestanud, tuleks kirje lisada ka tabelisse Price_Audit. See tuleneb päästikust, mille oleme hinnatabelis loonud. Kontrollime seda:
SELECT * FROM Price_Audits;
See tagastab järgmise:
Päästik töötas edukalt.
Postgresi loendi käivitaja
Kõik käivitajad, mille loote PostgreSQL on salvestatud tabelisse pg_trigger. Teil olevate päästikute loendi vaatamiseks andmebaas, küsige tabelit, käivitades käsu SELECT, nagu allpool näidatud:
SELECT tgname FROM pg_trigger;
See tagastab järgmise:
Tabeli pg_trigger veerg tgname tähistab päästiku nime.
Postgres Drop Trigger
Kukkuda a PostgreSQL päästik, kasutame avaldust DROP TRIGGER järgmise süntaksiga:
DROP TRIGGER [IF EXISTS] trigger-name ON table-name [ CASCADE | RESTRICT ];
Parameeter trigger-name tähistab kustutatava päästiku nime.
Tabelinimi tähistab tabeli nime, kust päästik kustutatakse.
Klausel IF EXISTS püüab kustutada olemasoleva päästiku. Kui proovite kustutada päästik, mida pole olemas, ilma IF EXISTS klauslit kasutamata, kuvatakse tõrketeade.
Valik CASCADE aitab teil automaatselt loobuda kõik päästikust sõltuvad objektid.
Kui kasutate suvandit PIIRATA, ei kustutata päästikut, kui objektid sellest sõltuvad.
Näiteks:
Päästiku nimega example_trigger kustutamiseks tabelis Price käivitame järgmise käsu:
Päästiku nimega example_trigger kukutamiseks tabelist Ettevõte käivitage järgmine käsk:
DROP TRIGGER example_trigger IF EXISTS ON Company;
pgAdmini kasutamine
Nüüd vaatame, kuidas kõik kolm toimingut pgAdmini abil sooritati.
Kuidas luua trigerit PostgreSQL kasutades pgAdminit
Siit saate teada, kuidas saate pgAdmini abil Postgresis päästiku luua:
Samm 1) Logige sisse oma pgAdmini kontole
Avage pgAdmin ja logige oma mandaatide abil oma kontole sisse
2. samm) looge demo andmebaas
- Vasakpoolsel navigeerimisribal klõpsake nuppu Andmebaasid.
- Klõpsake Demo.
Samm 3) Tippige päring
Tabeli Price_Audits loomiseks tippige redaktorisse päring:
CREATE TABLE Price_Audits (
book_id INT NOT NULL,
entry_date text NOT NULL
)
Samm 4) Käivitage päring
Klõpsake nuppu Käivita
Samm 5) Käivitage auditfunci kood
Funktsiooni auditfunc määratlemiseks käivitage järgmine kood:
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
Samm 6) Käivitage päästiku loomiseks kood
Käivitage hind_trigger käivitamiseks järgmine kood:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
7. samm) Sisestage uus kirje
- Uue kirje lisamiseks hinnatabelisse käivitage järgmine käsk:
INSERT INTO Price VALUES (3, 400)
- Käivitage järgmine käsk, et kontrollida, kas kirje on tabelisse Price_Audits sisestatud:
SELECT * FROM Price_Audits
See peaks tagastama järgmise:
Samm 8) Kontrollige tabeli sisu
Kontrollime tabeli Price_Audits sisu:
Käivitajate loetlemine pgAdmini abil
Step 1) Käivitage järgmine käsk, et kontrollida oma andmebaasi käivitajaid:
SELECT tgname FROM pg_trigger
See tagastab järgmise:
Päästikute eemaldamine pgAdmini abil
Päästiku nimega example_trigger kukutamiseks tabelist Ettevõte käivitage järgmine käsk:
DROP TRIGGER example_trigger IF EXISTS ON Company
kokkuvõte
- A PostgreSQL triger viitab funktsioonile, mis käivitub automaatselt, kui andmebaasiobjektil, näiteks tabelis, toimub andmebaasi sündmus.
- Selliste andmebaasisündmuste näideteks on INSERT, UPDATE, DELETE jne.
- Päästik eksisteerib ainult selle andmebaasiobjekti eluea jooksul, mille jaoks see loodi.
- Kui andmebaasiobjekt kustutatakse, kustutatakse ka päästik.
- PostgreSQL päästikud luuakse käsu CREATE TRIGGER abil.
- Iga päästik on seotud funktsiooniga, mis näitab, mida päästik selle käivitamisel teeb.







