Bevezetés a triggerekbe a PL / SQL-ben

Az adatbázis-triggerek a PL / SQL-kódok, amelyeket az adatbázis eseményei alapján hajtanak végre, például INSERT, UPDATE, Alter, Drop, Login, Logoff stb. Az adatbázis-triggerek segítenek az SQL-kódok egyszerű és rövid megtartásában. Az adatbázis-indítók hasznosak az összes változás kezelésében és az összes változás nyomon követésében a frissítés, törlés, megváltoztatás, bejelentkezés, kijelentkezés stb. Segítségével az adatbázisban, az adatbázis sémáiban és tábláiban.

3 típusú DB trigger van:

1. DML (adatmanipulációs nyelv): A DML végrehajtást indít az INSERT, UPDATE & DELETE táblázatokban.

2. DDL (Data Definition Language): Ez az eseményindító a Létrehozás, Módosítás, Drop, Elemzés, Audit, Grant stb.

3. Adatbázis-esemény: A DB eseményindító végrehajtása a LOGON, a LOGOFF, a Felfüggesztés, az adatbázis indítása, az adatbázis leállítása és egyéb DB hibák alapján.

Itt van még egy jellemző a DB Triggereknek:

A DB Trigger: Ez egy PL / SQL kód, amely tábla nézethez vagy DB eseményhez kapcsolódik.
Végrehajtás a DB tevékenység alapján

  • Előtt / utána, INSERT, UPDATE, DELETE.
  • Végrehajtható eseményindító eseményekenként egyszer vagy soronként egyszer, amelyet a trigger érint.

Végrehajtás indítás / leállítás / rendszerhiba / adatbetöltés leállítása alapján.

Hogyan hozhatók létre triggerek a PL / SQL-ben?

A következő lépéseket hozza létre triggerek létrehozására a PL / SQL-ben

1. DML triggerek

Ezt a kiváltót tovább osztják két típusra:

  • Triggerek után / Triggerekhez
  • Kiváltók helyett

Az AFTER után az esemény elindul, miután elindította a műveletet. A DELETE, UPDATE és INSERT utasítások a After triggerek példája.
INSTEAD A kiváltó események helyett a művelet. A DELETE, UPDATE és INSERT utasítások szintén részei.

Példa:

Példáinkhoz a Employee és a EmployeeAudit táblázatokat fogjuk használni.

SQL parancsfájl munkavállalói tábla létrehozásához:

CREATE TABLE Employee
(
Id int Primary Key,
Name nvarchar(30),
Salary int,
Gender nvarchar(10),
DepartmentId int
)
Insert data into Employee table
Insert into Employee values (1, 'Prakash', 5000, 'Male', 3)
Insert into Employee values (2, 'Robert', 3400, 'Male', 2)
Insert into Employee values (3, 'Anji', 6000, 'Female', 1)

Munkavállalói táblázat

SQL Script az EmployeeAudit tábla létrehozásához:

CREATE TABLE EmployeeAudit
(
Id int identity(1, 1) primary key,
AuditData nvarchar(1000)
)

rögzítjük az azonosítót, valamint a dátumot és az időt, amikor új alkalmazottat adunk az EmployeeAudit táblához. Ez a legkönnyebb program az INSERT esemény bekapcsolása utáni meghatározására.

2. DDL triggerek

Elsősorban az adatbázis séma bizonyos változásainak megelőzésére szolgál

Szintaxis

CREATE TRIGGER trigger_name
ON (DATABASE | ALL SERVER)
(WITH ddl_trigger_option) FOR (event_type | event_group )
AS (sql_statement)

trigger_name: Meg kell adnia a kiváltó nevét a CREATE TRIGGER kulcsszavak után. ezenkívül nem kell megadnia az adatbázis-sémát, mert nem kapcsolódik egy tényleges adatbázis-táblázathoz vagy nézethez.

Adatbázis | Összes szerver: Ha az eseményindító a kiszolgáló hatókörű eseményein tüzel, akkor nem tudjuk használni az ÖSSZES SZERVERET. Használja a DATABASE-t, ha az eseményindító az adatbázis hatókörű eseményeken indul

ddl_trigger_option: Megadja a TITKOSÍTÁS és / vagy az EXECUTE AS záradékot.

esemény_típus | event_group: Az event_group egy event_type típusú eseménycsoport, például DDL_TABLE_EVENTS és az event_type egy DDL eseményt jelöl, amely az eseményindító tüzet okoz, például: ALTER_TABLE, CREATE_TABLE stb.

Példa:

A végrehajtás indítása a CREATE_TABLE DDL eseményre adott válaszként.

CREATE TRIGGER MyFirstTrigger
ON Database
FOR CREATE_TABLE
AS
BEGIN
Print 'New table created'
END

Ellenőrizze, hogy az eseményindító létrejött-e az Adatbázis-trigger mappában, és ha nem kapja meg, kérjük, frissítse a mappát (Database Trigger).

3. Adatbázis-esemény

Bármely DB eseményhez használható, mint például a LOGON, a LOGOFF, a Felfüggesztés, az adatbázis indítása, az adatbázis leállítása

Szintaxis:

CREATE (OR REPLACE) TRIGGER trigger_name
(BEFORE | AFTER) (database_event) ON (DATABASE | SCHEMA)
DECLARE
…some code…
END;

trigger_name : Meg kell adnia a kiváltó nevét a CREATE TRIGGER kulcsszavak után.

Az adatbázis_ esemény esemény alapvetően olyan adatbázisokban fordul elő, mint például kijelentkezés, bejelentkezés, leállítás stb. Kiválaszthatjuk, mely adatbázisban vagy sémában fog működni az eseményindító.

Példa: Kilépési eseményindító

Itt bemutathatjuk a LOGOFF adatbázis esemény eseményindítóját. Ez az eseményindító egy rekordot hoz létre a táblában (kijelentkezés), amikor bárki leválasztja.
Ez a trigger rögzíti a felhasználó nevét és a leválasztás időpontját.

Kilépési táblázat létrehozása:

create table logoff_table (
who varchar2(30),
when date
);

Kilépési eseményindító létrehozása:

create trigger trg_logoff
before logoff on database
begin
insert into logoff_table values(sys_context('userenv', 'session_user'), sysdate);
end;
/

A fenti eseményindítóban létrehoztuk a Tiggert, hogy figyelemmel kísérjük bármely felhasználó kijelentkezését. Ez az eseményindító végrehajtja az adatbázis-felhasználók kijelentkezését. A kijelentkezési táblázat néhány részletet tárol felhasználói névvel és a kijelentkezés idejével (A részleteket igény szerint eldöntheti).

Ugyanígy hozhatunk létre egy újabb eseményindítót is, amely figyelemmel kíséri és tárolja a bejelentkezési adatokat az adott adatbázishoz. Az adatbázis eseményindítói segítenek a hibaelhárításban.
Az összes tábla neve követelmény-specifikus, megváltoztathatjuk a nevüket a követelményeknek megfelelően.

A triggerek előnye a PL / SQL-ben

  • Jó ellenőrzési nyomvonalakhoz.
  • Jó az adatok manipulálásához.
  • Komplex biztonsági rendszerek végrehajtása.
  • Az üzleti szabályok érvényesítése.
  • Megakadályozhatja az adatbázis és a séma változásait.
  • A PL / SQL kód rövidebb a triggerekkel.
  • Kövesse nyomon az adatbázis, a séma és a DB táblázatok változásait.
  • A műveleti rekordok adatbázisban történő kezelése hasznos a hibaelhárításban.
  • Nem kell manuálisan ellenőriznie az adatbázisban végrehajtott változásokat, az eseményindító mindig maga cselekszik egy adott esemény bekövetkezésekor.

Következtetés

Itt van ez a fejezet, és megismertük a triggerek típusait, például a DDL, DML és Database eseményindítókat. Azt is megtanultuk, miközben egy DDL-eseményindító felhasználható az INSERT, UPDATE, DELETE stb. Használatára. Az utasításokat és a DML-triggereket az adatbázis-táblázatokban a Létrehozás, Módosítás, Drop stb. Felfüggesztés, adatbázis-indítási művelet végrehajtva az adatbázisban.

Az egyes triggerek szintaxisa könnyen érthető, és könnyen konvertálható PL / SQL kódra. Az olyan PL / SQL program, mint például a kijelentkezési esemény áttekintést adott arról, hogyan fog működni az adatbázis-eseményindító, ha bármilyen felhasználó kijelentkezik az adatbázisából. A DML Trigger alkalmazásban bebizonyítottuk, hogy az AFTER Trigger miként fog működni, ha új alkalmazottak új belépésre kerülnek. A DDL triggerek hasznosak az adatbázisban és a sémaban bekövetkező bármilyen változás megelőzésében.

Ajánlott cikkek

Ez egy útmutató a triggerekhez a PL / SQL-ben. Itt tárgyaljuk, hogyan lehet triggereket létrehozni a PL / SQL-ben példákkal és előnyökkel. A következő cikket is megnézheti.

  1. Kurzorok PL / SQL formátumban
  2. CASE utasítás PL / SQL formátumban
  3. Mi az a PL / SQL?
  4. PL / SQL parancsok
  5. Elsődleges kulcs vs idegen kulcs | Legfontosabb különbségek