Introduktion till Triggers i PL / SQL

Databasutlösare är PL / SQL-koden som körs baserat på en händelse i databasen som INSERT, UPDATE, Alter, Drop, Login, Logoff, etc. Databas triggers hjälper oss att hålla SQL-koderna enkla och korta. Databasutlösare är användbara för att hantera alla ändringar och hålla reda på alla dessa ändringar med uppdatering, radering, ändring, inloggning, avstängning, etc. i databas, databasscheman och dess tabeller.

Vi har tre typer av DB-triggers:

1. DML (Data Manipulation Language): DML-triggers körs INSERT, UPDATE & DELETE i tabellerna.

2. DDL (Data Definition Language): Denna trigger körs på Create, Alter, Drop, Analys, Audit, Grant, etc.

3. Databashändelse: Exekvering av DB-händelsestrigrar baserade på LOGON, LOGOFF, Suspend, databasstart, databasavstängning och andra DB-fel.

Här är ytterligare ett kännetecken för DB Triggers:

En DB-utlösare: Det är PL / SQL-kod kopplad till en tabellvy eller DB-händelse.
Kör baserat på DB-aktivitet

  • Före / efter, INSERT, UPDATE, DELETE.
  • Utförs en gång per utlösande händelser eller en gång per rad påverkas av avtryckaren.

Utför baserat på start / avstängning / systemfel / datalastavstängning.

Hur skapar jag triggers i PL / SQL?

Här är följande steg för att skapa triggers i PL / SQL

1. DML Triggers

Denna utlösare är vidare indelad i två typer:

  • Efter triggers / For Triggers
  • Istället för triggers

EFTER utlösaren avfyras efter utlösning. DELETE, UPDATE och INSERT-uttalanden är ett exempel på After-triggers.
INSTÄLLNING Av triggers handlingar istället för handlingen. DELETE, UPDATE och INSERT-uttalanden är också en del av det.

Exempel:

Vi kommer att använda tabellerna Medarbetare och MedarbetareAudit för våra exempel.

SQL-skript för att skapa en anställdtabell:

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)

Medarbetartabell

SQL-skript för att skapa EmployeeAudit-tabell:

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

vi kommer att fånga upp ID och datum och tid När en ny anställd läggs till i tabellen EmployeeAudit. Detta är det enklaste programmet att definiera EFTER TRIGGER för INSERT-händelsen.

2. DDL Triggers

Det används främst för att förhindra särskilda ändringar i ditt databasschema

Syntax

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

trigger_name är att ange det definierade namnet på utlösaren efter CREATE TRIGGER-nyckelorden. Du behöver inte heller ange ett databasschema eftersom det inte är relaterat till en faktisk databastabell eller vy.

Databas | All server: Om utlösaren startar på server-scoped-händelser än vi kan använda ALL SERVER. Använd DATABASE om avtryckaren avges på databas-scoped-händelser

ddl_trigger_option: Den anger ENCRYPTION och / eller EXECUTE AS-klausul.

event_type | event_group: Event_group är en grupp av event_type-händelse som DDL_TABLE_EVENTS & Event_type indikerar en DDL-händelse som får utlösaren att avfyras, t.ex. ALTER_TABLE, CREATE_TABLE, etc.

Exempel:

Aktivera körning som svar på CREATE_TABLE DDL-händelsen.

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

Kontrollera om utlösaren har skapats under databasutlösningsmappen och om du inte får den, uppdatera mappen (Databasutlösare).

3. Databashändelse

Det kan användas för alla DB-händelser som LOGON, LOGOFF, Suspend, Databasstart, Databas Stäng av

Syntax:

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

trigger_name är att ange det definierade namnet på utlösaren efter CREATE TRIGGER-nyckelorden.

database_event inträffar i princip händelser i databaser som logoff, inloggning, avstängning, etc. Vi kan välja vilken databas eller schema denna utlösare kommer att fungera.

Exempel: Avstängningsavtryckare

Här kan vi demonstrera LOGOFF Database Event Trigger. Denna trigger skapar en post i en tabell (logoff) när någon kopplar bort.
Denna utlösare registrerar användarens namn och tiden för frånkoppling.

Skapa ett logotyptabell:

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

Skapa en Logoff Trigger:

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

Här i utlösaren ovan har vi skapat Tigger för att övervaka loggar från alla användare. Denna utlösare kommer att köras efter inloggning av databasanvändare. Avstängningstabell lagrar vissa detaljer Användarnamn och det är logotyptid (Du kan bestämma information enligt krav).

På samma sätt kan vi skapa en annan trigger som övervakar och lagrar inloggningsdetaljer för en viss databas. Utlösare av databashändelser är till hjälp vid felsökning.
Alla tabellnamn är kravspecifika, vi kan ändra deras namn enligt kraven.

Fördel med triggers i PL / SQL

  • Bra för granskningsspår.
  • Bra för att manipulera data.
  • Tvinga fram komplexa säkerhetssystem.
  • Tvinga fram affärsregler.
  • Förhindra ändringar i databas och schema.
  • PL / SQL-kod är kortare med triggers.
  • Håll koll på ändringarna i databas-, schema- och DB-tabeller.
  • Att hantera åtgärdsposter i databasen hjälper till med felsökning.
  • Inget behov av att kontrollera förändringarna i databasen manuellt, utlösaren agerar alltid själv vid en viss händelsehändelse.

Slutsats

Här är det här kapitlet, vi har lärt oss om typer av triggers som DDL, DML och databashändelsetrigrar. Vi har också lärt oss medan en DDL-trigger kan användas för INSERT, UPDATE, DELETE, etc. Uttalanden och DML-triggers är utformade för Create, Alter, Drop, etc. … inom databastabeller men databashändelsetriggers fungerar när det finns någon inloggning, Stäng av, databasstartåtgärd utförd i databas.

Syntaxen för varje trigger är lätt att förstå och den kan enkelt konverteras till PL / SQL-kod. PL / SQL-program som Logoff triggered har gett en översikt över hur databasutlösaren kommer att fungera i fall någon användare loggar från sin databas. I DML Trigger har vi visat hur EFTER Trigger kommer att fungera när det kommer en ny anställning för någon ny anställd. DDL Triggers är användbara för att förhindra vissa ändringar i databas och schema.

Rekommenderade artiklar

Detta är en guide till Triggers i PL / SQL. Här diskuterar vi hur man skapar triggers i PL / SQL med exempel och fördelar. Du kan också titta på följande artikel.

  1. Markörer i PL / SQL
  2. CASE-uttalande i PL / SQL
  3. Vad är PL / SQL?
  4. PL / SQL-kommandon
  5. Primär nyckel vs utländsk nyckel | Topp skillnader