PostgreSQL

PostgreSQL Trigger létrehozása az INSERT / UPDATE / DELETE után

PostgreSQL Trigger létrehozása az INSERT / UPDATE / DELETE után
Amikor egy meghatározott módosítási műveletet (SQL INSERT, UPDATE, DELETE vagy TRUNCATE deklaráció) hajtanak végre egy meghatározott táblán, az trigger egy eseménysorozat, amelyet automatikusan végrehajtanak. Az eseményindítók felhasználhatók üzleti szabályok bevezetésére, a bemeneti információk hitelesítésére és az ellenőrzési nyomvonal fenntartására. Az SQL-triggereket az SQL-formátumnak megfelelően hajtják végre. Ez magában foglalja a több programozási nyelven használt struktúrákat, amelyek lehetővé teszik a helyi változók deklarálását, a folyamat folyamatának nyomon követését deklarációkkal, az utasítások kiosztását a változókhoz és a hibák kezelését. Továbbá, ha valamihez, például egy táblához létrehoz egy triggeret, a trigger azonnal eltávolításra kerül, amint a tábla eltávolításra kerül. Megvizsgáljuk, hogyan működnek a PostgreSQL Triggerek ebben a szegmensben.

Szintaxis:

A következő az egyszerű szintaxis az eseményindító előállításához:

>> CREATE TRIGGER trigger_name [ELŐTT | UTÁN | INSTEAD OF] eseménynév BE table_name [---- Trigger Logic];

Itt van a fenti általános lekérdezés magyarázata.

A ravasz fogalmának rövid megértéséhez indítsa el a PostgreSQL héjat az alkalmazásokból. Ha másik kiszolgálón szeretne dolgozni, cserélje ki a szervert, vagy nyomja meg az Enter billentyűt. Adja hozzá az adatbázis nevét, amelyen dolgozni szeretne, különben hagyja úgy, ahogy van, és érintse meg az Enter billentyűt. Mint láthatja, jelenleg alapértelmezés szerint az 5432-es porton dolgozunk; meg is változtathatja. Ezt követően adja meg a Postgres-től eltérő felhasználónévet, ha más felhasználóval szeretne dolgozni, vagy hagyja üresen, és nyomja meg az Enter gombot. Most a parancsfájlja használatra kész.

TRIGGER INSERT parancs után

Vizsgáljuk meg az eseményindító példáját, amikor az INSERT parancsot használták eseményindító eseményként. Ehhez két új táblázatot kell létrehoznunk, pl.g., „Foglalkoztatás” és „ellenőrzés”. Az „alkalmazzon” táblázat tartalmazza az alkalmazottak személyes adatait egy adott vállalattól, az „audit” táblázat pedig információkat tartalmaz arról, hogy az alkalmazottak mikor léptek be a vállalathoz. A táblázatok létrehozására vonatkozó lekérdezéseket az alábbiakban adjuk meg.

>> CREATE TABLE foglalkoztat (ID INTEGER NULL NEM ELSŐDLEGES KULCS, név VARCHAR (100) NOT NULL, Age VARCHAR (100) NOT NULL, fizetés VARCHAR (100) NULL);

>> CREATE TABLE audit (empid INTEGER NOT NULL, entry_date VARCHAR (100) NOT NULL);

Létre kell hoznia egy eljárást, amely automatikusan végrehajtásra kerül, vagy működni fog, amikor a trigger elindul. A következő CREATE TRIGGER parancsban lesz használva. Az alábbi parancsból ötletet kaphat arról, hogy létrehoztunk egy „auditlogfunc ()” eljárást, amely egy „$ examp_table $” változóként adja vissza az indítót. A függvény a BEGIN záradékkal kezdődik, amelyet az INSERT utasítás követ. Ez az INSERT utasítás beépíti az automatikus azonosítót és az aktuális dátumot a beépített függvény segítségével az „audit” táblába, és ezt az eredményt visszaküldi a TRIGGER-nek.

Itt az ideje egy TRIGGER létrehozására a CREATE TRIGGER paranccsal. Létrehozunk egy „emp_trig” nevű ravaszt az „foglalkoztat” táblán. Az AFTER INSERT ON záradék azt jelenti, hogy ez a trigger csak az insert parancs végrehajtása után fog működni. A MINDEN SORRA azt jelenti, hogy minden INSERT parancs végrehajtásakor ez az eseményindító meghívja és végrehajtja a közvetlenül azelőtt létrehozott „auditlogfunc ()” eljárást.

>> TRIGGER LÉTREHOZÁSA emp_trig UTÁN BEHELYEZÉS UTÁN FELHASZNÁLÁS FOLYAMATOS VÉGREHAJTÁSI ELJÁRÁSHOZ auditlogfunc ();

Ideje beillesztenünk néhány adatot a „foglalkoztatás” táblába. Hajtsa végre az alábbi INSERT parancsot a shellben.

>> INSERT INTO alkalmaz (ID, név, életkor, fizetés) ÉRTÉKEK ('1', 'Paul', '34', '60000');

Vessen egy pillantást a „foglalkoztatás” táblára. Az adatok hozzáadása sikeresen megtörtént az INSERT paranccsal.

Most vessen egy pillantást az „audit” táblára. Láthatja, hogy az „emp_trig” és az auditlogfunc () kiváltása miatt is frissül.

TRIGGER UPDATE parancs után

Most egy kiváltó példát fogunk megvizsgálni, amely az UPDATE parancsot használja eseményindító eseményként. Újra létre kell hoznunk egy új eljárást a képen bemutatott eltérő „update” névvel. Ez az eljárás híváskor bejegyzi az „audit” táblába is.

Most a CREATE TRIGGER paranccsal hozzon létre egy új eseményindítót „update_emp” néven. Ez csak az UPDATE lekérdezés végrehajtása után fog működni az alkalmazott táblán, és az eljárást „update” -nek fogja hívni.

Frissítse a „foglalkoztat” táblázatot úgy, hogy azonosítóját „2” -re állítja.

A módosítások megtekintéséhez az alábbiakban csatolva töltse le a „foglalkoztatás” tábla rekordjait.

Amint az „audit” táblán látható, a „foglalkoztatás” táblázat frissítésével átszervezték.

TRIGGER a DELETE paranccsal

Nyissa meg az pgAdmin 4 alkalmazást a GUI PostgreSQL használatához. A „teszt” séma alatt felfedez egy táblázatok listáját. Hozzon létre egy új táblát „emp” és ugyanazt az „audit” táblázatot.

Ezúttal a DELETE paranccsal hívjuk meg az trigger parancsot. Az alábbiakban az „emp” táblázat található néhány rekorddal.

Itt található az ellenőrzési táblázat az előző két frissítéssel.

Hozzon létre egy „Del ()” nevű eljárást a beillesztés elindításához az „audit” táblában, amikor törli a rekordokat az „emp” táblából.

Hozzon létre egy „del_trig” ravaszt a CREATE TRIGGER lekérdezés segítségével. Ez az indító akkor hajtja végre a „Del” eljárást, amikor a DELETE záradékot végrehajtják az „emp” táblán.

Töröljünk egy rekordot az „emp” táblázatból, ahol a munkavállaló „id” értéke „5”. Egy sort töröl az „emp” táblázatból.

Szerezze be az „emp” tábla rekordjait, és nézze meg. Megtekintheti, hogy a sor eltávolítva, ahol az „id” értéke „5” volt.

Most nyerje ki az „audit” tábla rekordjait, és észreveszi, hogy frissült, mert a DELETE műveletet végrehajtották az „emp” táblán.

Következtetés:

Szinte minden lényeges példát megtettünk a TRIGGER fogalmának megértése érdekében az INSERT, UPDATE és DELETE műveletek végrehajtása során.

Hogyan lehet játékot fejleszteni Linuxon
Egy évtizeddel ezelőtt nem sok Linux-felhasználó jósolta, hogy kedvenc operációs rendszerük egy napon a videojátékok népszerű játékplatformja lesz. El...
Kereskedelmi játékmotorok nyílt forráskódú portjai
Ingyenes, nyílt forráskódú és platformokon átívelő játékmotorok szabadidős programjai felhasználhatók a régi, valamint a meglehetősen friss játékcímek...
A legjobb parancssori játékok Linuxhoz
A parancssor nem csak a legnagyobb szövetséges a Linux használatakor, hanem a szórakozás forrása is lehet, mert sok olyan szórakoztató játék lejátszás...