Mik azok a Postgresql kiváltók?
A PostgreSQL trigger egy olyan funkció, amely automatikusan elindul, amikor egy adatbázis-esemény egy adatbázis-objektumon történik. Például egy táblázat.
Például az adatbázis-eseményekre, amelyek aktiválhatnak egy eseményindítót, szerepelhet az INSERT, az UPDATE, a DELETE stb. Ezenkívül, ha létrehoz egy triggeret egy táblához, akkor az trigger automatikusan leesik, amikor ezt a táblát törlik.
Ebben a PostgreSQL oktatóanyagban a következőket tanulja meg:
- Mik azok a Postgresql kiváltók?
- Hogyan használták az eseményindítót a POSRGREQL-ben?
- Trigger létrehozása
- A pgAdmin használatával
- Triggerek eldobása
Hogyan használták az eseményindítót a POSRGREQL-ben?
Az eseményindító megjelölhető a FOR EACH ROW operátorral a létrehozása során. Ilyen ravaszt egyszer hívnak meg minden művelettel módosított sorhoz. Az eseményindító a FOR EACH STATEMENT operátorral is megjelölhető a létrehozása során. Ezt az eseményindítót csak egyszer hajtják végre egy adott művelethez.
Trigger létrehozása
Trigger létrehozásához a CREATE TRIGGER funkciót használjuk. Itt található a függvény szintaxisa:
CREATE TRIGGER trigger-name [BEFORE|AFTER|INSTEAD OF] event-nameON table-name[-- Trigger logic];
Az eseményindító neve az eseményindító neve.
A BEFORE, AFTER és INSTEAD kulcsszavak határozzák meg, hogy mikor váltják ki az eseményindítót.
Az eseménynév annak az eseménynek a neve, amely az eseményindító meghívását okozza. Ez lehet INSERT, UPDATE, DELETE stb.
A tábla neve annak a táblának a neve, amelyen létre kell hozni az eseményindítót.
Ha az indítót egy INSERT művelethez kívánják létrehozni, hozzá kell adnunk az ON oszlopnév paramétert.
A következő szintaxis ezt bizonyítja:
CREATE TRIGGER trigger-name AFTER INSERT ON column-nameON table-name[-- Trigger logic];
Például:
Az alább megadott ártáblát fogjuk használni:
Ár:
Hozzunk létre egy másik táblázatot, az Ár_Auditokat, ahol naplózni fogjuk az Ártáblázatban végrehajtott módosításokat:
CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL);
Most definiálhatunk egy új függvényt auditfunc néven:
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;
A fenti funkció beilleszt 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 ravasztfüggvény, meg kell kötnünk az Ár táblázatunkhoz. A kiváltónak megadjuk az price_trigger nevet. Új rekord létrehozása előtt a trigger naplózása automatikusan elindul. Itt van a ravaszt:
CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc();
Helyezzen be egy új rekordot az Ár táblázatba:
INSERT INTO PriceVALUES (3, 400);
Most, hogy beillesztettünk egy rekordot az Ár táblába, egy rekordot is be kell illeszteni az Ár_Audit táblába. Ez annak az eseményindítónak lesz az eredménye, amelyet az Ár táblán hoztunk létre. Ellenőrizzük ezt:
SELECT * FROM Price_Audits;
Ez a következőket adja vissza:
A ravasz sikeresen működött.
Felsorolási kiváltók
A PostgreSQL-ben létrehozott összes eseményindítót a pg_trigger táblázat tárolja. Az adatbázisban lévő eseményindítók listájának megtekintéséhez a SELECT parancs futtatásával kérdezze le a tábláról 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.
Ejtőindítók
A PostgreSQL trigger aktiválásához a DROP TRIGGER utasítást használjuk a következő szintaxissal:
DROP TRIGGER [IF EXISTS] trigger-nameON table-name [ CASCADE | RESTRICT ];
Az trigger-név paraméter a törölni kívánt trigger nevét jelöli.
A tábla neve annak a táblának a nevét jelöli, amelyből törölni kell a ravaszt.
Az IF EXISTS záradék megkísérli törölni a létező ravaszt. Ha az IF EXISTS záradék használata nélkül megpróbál törölni egy nem létező ravaszt, akkor hibaüzenetet kap.
A CASCADE opció segít minden olyan objektum automatikus eldobásában, amely a ravasztól függ.
Ha a KORLÁTOZÁS lehetőséget használja, az indító nem törlődik, ha az objektumok ettől függenek.
Például:
Az example_trigger nevű eseményindító törléséhez az Price táblában futtatjuk a következő parancsot:
Az example_trigger nevű trigger indításához a Vállalat táblára futtassa a következő parancsot:
DROP TRIGGER example_trigger IF EXISTSON Company;
A pgAdmin használatával
Most nézzük meg, hogyan teljesített mindhárom művelet a pgAdmin használatával.
Triggerek létrehozása
Ha ugyanezt szeretné elérni a pgAdmin segítségével, tegye ezt:
1. lépés: Jelentkezzen be pgAdmin-fiókjába.
2. lépés)
- A bal oldali navigációs sávon kattintson az Adatbázisok elemre.
- Kattintson a Demo elemre.
3. lépés: Az Price_Audits tábla létrehozásához írja be a lekérdezésszerkesztőt:
CREATE TABLE Price_Audits (book_id INT NOT NULL,entry_date text NOT NULL)
4. lépés) Kattintson az Execute gombra.
5. lépés: 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$BEGININSERT 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övetkező kódot az trigger_indító létrehozásához:
CREATE TRIGGER price_trigger AFTER INSERT ON PriceFOR EACH ROW EXECUTE PROCEDURE auditfunc()
7. lépés)
- Futtassa a következő parancsot egy új rekord beszúrásához az Ár táblába:
INSERT INTO PriceVALUES (3, 400)
- Futtassa a következő parancsot annak ellenőrzéséhez, hogy be lett-e helyezve egy rekord az Ár_Auditok táblába:
SELECT * FROM Price_Audits
Ennek vissza kell adnia a következőket:
8. lépés: Ellenőrizzük az Ár_Audits táblázat tartalmát:
Felsorolási kiváltók
1. lépés: Futtassa a következő parancsot az adatbázis triggerjeinek ellenőrzéséhez:
SELECT tgname FROM pg_trigger
Ez a következőket adja vissza:
Triggerek eldobása
Az example_trigger nevű trigger indításához a Vállalat táblára futtassa a következő parancsot:
DROP TRIGGER example_trigger IF EXISTSON Company
Összegzés:
- A PostgreSQL eseményindító olyan funkcióra vonatkozik, amely automatikusan elindul, amikor egy adatbázis-esemény, például egy tábla, adatbázis-esemény esetén történik.
- Ilyen adatbázis-események például az INSERT, UPDATE, DELETE stb.
- Trigger csak annak az adatbázis-objektumnak az élettartama alatt létezik, amelyre létrehozták.
- Ha az adatbázis objektum törlődik, akkor a ravaszt is törli.
- A PostgreSQL triggereket a CREATE TRIGGER utasítás segítségével hozzák létre.
- Mindegyik ravaszt egy függvényhez társítják, amely meghatározza, hogy az eseményindító mit fog tenni, amikor meghívják.
Töltse le az oktatóanyagban használt adatbázist