PostgreSQL Triggerek: létrehozás, listázás és eldobás a példával
Miben van a Trigger PostgreSQL?
A PostgreSQL ravasz egy olyan függvény, amely automatikusan aktiválódik, amikor adatbázis-esemény történik egy adatbázis-objektumon. Például egy asztal. Példák azokra az adatbáziseseményekre, amelyek aktiválhatnak egy triggert: INSERT, UPDATE, DELETE stb. Ezen túlmenően, amikor létrehoz egy triggert egy táblához, a trigger automatikusan eldobásra kerül, amikor a tábla törlődik.
Hogyan használják a Triggert? PostgreSQL?
A trigger létrehozása során a FOR EACH ROW operátorral megjelölhető. Egy ilyen trigger egyszer kerül meghívásra minden, a művelet által módosított sorhoz. A trigger létrehozása során a FOR EACH STATEMENT operátorral is megjelölhető. Ez a trigger csak egyszer kerül végrehajtásra egy adott művelethez.
PostgreSQL Létrehozás trigger
A trigger létrehozásához a CREATE TRIGGER funkciót használjuk. Íme a függvény szintaxisa:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-name ON table-name [ -- Trigger logic ];
A triggernév a trigger neve.
A BEFORE, AFTER és INSTEAD OF olyan kulcsszavak, amelyek meghatározzák, hogy az eseményindítót mikor kell meghívni.
Az eseménynév annak az eseménynek a neve, amely a triggert elindítja. Ez lehet INSERT, FRISSÍTÉS, TÖRLÉS stb.
A táblanév annak a táblának a neve, amelyen a triggert létre kell hozni.
Ha a triggert egy INSERT művelethez kell létrehozni, hozzá kell adnunk az ON oszlopnév paramétert.
A következő szintaxis ezt szemlélteti:
CREATE TRIGGER trigger-name AFTER INSERT ON column-name ON table-name [ -- Trigger logic ];
PostgreSQL Hozzon létre trigger-példát
Az alábbi ártáblázatot használjuk:
Ár:
Hozzunk létre egy másik táblát Price_Audits néven, ahol naplózzuk az Ár táblában végrehajtott változtatásokat:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL );
Most már definiálhatunk egy új, auditfunc nevű függvényt:
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;
A fenti függvény beszúr egy rekordot az Price_Audits táblába, beleértve az új sorazonosítót és a rekord létrehozásának idejét.
Most, hogy megvan a trigger függvény, össze kell kötnünk az ártáblázatunkkal. A triggernek a price_trigger nevet adjuk. Új rekord létrehozása előtt a rendszer automatikusan meghívja a trigger funkciót a változások naplózásához. Íme a trigger:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc();
Szúrjunk be egy új rekordot az Ártáblázatba:
INSERT INTO Price VALUES (3, 400);
Most, hogy beszúrtunk egy rekordot az Ár táblába, egy rekordot az Price_Audit táblába is be kell illeszteni. Ez az Ártáblázatban létrehozott trigger eredménye lesz. Ellenőrizzük ezt:
SELECT * FROM Price_Audits;
Ez a következőt adja vissza:
A trigger sikeresen működött.
Postgres List Trigger
Minden aktiváló, amelyben létrehozol PostgreSQL a pg_trigger táblában vannak tárolva. A rajta lévő triggerek listájának megtekintéséhez adatbázis, lekérdezheti a táblát a SELECT parancs futtatásával az alábbiak szerint:
SELECT tgname FROM pg_trigger;
Ez a következőket adja vissza:
A pg_trigger tábla tgname oszlopa a trigger nevét jelöli.
Postgres Drop Trigger
Ledobni a PostgreSQL trigger, a DROP TRIGGER utasítást a következő szintaxissal használjuk:
DROP TRIGGER [IF EXISTS] trigger-name ON table-name [ CASCADE | RESTRICT ];
A trigger-name paraméter a törölni kívánt trigger nevét jelöli.
A táblanév annak a táblának a nevét jelöli, amelyből a triggert törölni kell.
Az IF EXISTS záradék egy létező eseményindítót próbál törölni. Ha olyan triggert próbál meg törölni, amely nem létezik az IF EXISTS záradék használata nélkül, hibaüzenetet fog kapni.
A CASCADE opció segít automatikusan eldobni minden olyan objektumot, amely a triggertől függ.
Ha a KORLÁTOZÁS opciót használja, a trigger nem törlődik, ha az objektumok attól függnek.
Például:
Az example_trigger nevű trigger törléséhez a Price táblában a következő parancsot futtatjuk:
Az example_trigger nevű trigger eldobásához a Vállalat táblában futtassa a következő parancsot:
DROP TRIGGER example_trigger IF EXISTS ON Company;
pgAdmin használatával
Most nézzük meg, hogyan történt mindhárom művelet a pgAdmin használatával.
Hogyan hozzunk létre triggert PostgreSQL pgAdmin használatával
A következőképpen hozhat létre triggert a Postgresben a pgAdmin segítségével:
1. lépés) Jelentkezzen be pgAdmin fiókjába
Nyissa meg a pgAdmin alkalmazást, és jelentkezzen be fiókjába a hitelesítő adataival
2. lépés) Hozzon létre egy bemutató adatbázist
- A bal oldali navigációs sávban kattintson az Adatbázisok elemre.
- Kattintson a Demo gombra.
3. lépés) Írja be a lekérdezést
A Price_Audits táblázat létrehozásához írja be a lekérdezést a szerkesztőbe:
CREATE TABLE Price_Audits ( book_id INT NOT NULL, entry_date text NOT NULL )
4. lépés) Végezze el a lekérdezést
Kattintson a Végrehajtás gombra
5. lépés) Futtassa az auditfunc kódot
Futtassa a következő kódot az auditfunc függvény meghatározásához:
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
6. lépés) Futtassa a kódot a trigger létrehozásához
Futtassa a következő kódot a trigger price_trigger létrehozásához:
CREATE TRIGGER price_trigger AFTER INSERT ON Price FOR EACH ROW EXECUTE PROCEDURE auditfunc()
7. lépés) Szúrjon be egy új rekordot
- Futtassa a következő parancsot egy új rekord beszúrásához az ártáblázatba:
INSERT INTO Price VALUES (3, 400)
- Futtassa a következő parancsot annak ellenőrzésére, hogy bekerült-e rekord a Price_Audits táblába:
SELECT * FROM Price_Audits
Ennek a következőt kell visszaadnia:
8. lépés) Ellenőrizze a táblázat tartalmát
Nézzük meg a Price_Audits tábla tartalmát:
Triggerek listázása a pgAdmin segítségével
Step 1) Futtassa a következő parancsot az adatbázisban lévő triggerek ellenőrzéséhez:
SELECT tgname FROM pg_trigger
Ez a következőket adja vissza:
Triggerek eldobása a pgAdmin segítségével
Az example_trigger nevű trigger eldobásához a Vállalat táblában futtassa a következő parancsot:
DROP TRIGGER example_trigger IF EXISTS ON Company
Összegzésként
- A PostgreSQL A trigger olyan függvényre utal, amely automatikusan aktiválódik, amikor adatbázis-esemény történik egy adatbázis-objektumon, például egy táblán.
- Ilyen adatbázisesemények például az INSERT, UPDATE, DELETE stb.
- Trigger csak annak az adatbázis-objektumnak az élettartama alatt létezik, amelyhez létrehozták.
- Ha az adatbázis-objektum törlődik, a trigger is törlődik.
- PostgreSQL triggerek a CREATE TRIGGER utasítással jönnek létre.
- Minden trigger egy függvényhez van társítva, amely kimondja, hogy a trigger mit fog tenni, amikor meghívásra kerül.
Töltse le az oktatóanyagban használt adatbázist