Introduksjon til triggere i PL / SQL

Databasetrigere er PL / SQL-koden som kjøres basert på en hendelse i databasen som INSERT, UPDATE, Alter, Drop, Login, Logoff, etc. Database triggers hjelper oss med å holde SQL-kodene enkle og korte. Databasetrigger er nyttige når du skal håndtere alle endringer og holde oversikt over alle endringene ved å bruke Oppdater, slett, endre, innlogging, avlogging, etc. i databaser, databaseskjemaer og tabeller derav.

Vi har tre typer DB triggere:

1. DML (Data Manipulation Language): DML-triggere kjøres på INSERT, UPDATE & DELETE i tabellene.

2. DDL (Data Definition Language): Denne utløseren kjøres på Create, Alter, Drop, Analyse, Audit, Grant, etc.

3. Databasehendelse: Utførelse av DB-hendelsesutløsere basert på LOGON, LOGOFF, Suspend, Database-oppstart, Database Shutdown og andre DB-feil.

Her er en mer karakteristikk av DB Triggers:

En DB-trigger: Det er PL / SQL-kode som er koblet til en tabellvisning eller DB-hendelse.
Utføres basert på DB-aktivitet

  • Før / Etter INSERT, OPPDATERING, SLETT.
  • Utført en gang per utløsende hendelser eller en gang per rad påvirket av avtrekkeren.

Utfør basert på oppstart / avslutning / systemfeil / avstengning av datalast.

Hvordan lage triggere i PL / SQL?

Her er følgende trinn for å lage triggere i PL / SQL

1. DML utløsere

Denne utløseren er videre delt inn i to typer:

  • Etter triggere / For triggere
  • I stedet for triggere

ETTER utløser branner etter å ha utløst handling. DELETE, UPDATE og INSERT-setninger er et eksempel på After triggers.
INSTEAD Av utløser handlinger i stedet for handlingen. SLETT, OPPDATERING og INSERT-uttalelser er også en del av det.

Eksempel:

Vi vil bruke tabellene Employee and EmployeeAudit som eksempler.

SQL Script for å lage en ansattstabell:

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)

Ansattes tabell

SQL Script for å lage EmployeeAudit-tabellen:

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

vi vil fange opp ID og dato og klokkeslett når en ny ansatt legges til i EmployeeAudit-tabellen. Dette er det enkleste programmet å definere ETTER TRIGGER for INSERT-hendelsen.

2. DDL-triggere

Det brukes hovedsakelig for å forhindre spesielle endringer i databaseskjemaet

syntax

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

trigger_name er å spesifisere det definerte navnet på triggeren etter CREATE TRIGGER-nøkkelordene. Du trenger heller ikke å spesifisere et databaseskjema fordi det ikke er relatert til en faktisk databasetabell eller -visning.

Database | All server: Hvis utløseren avfyres på server-scoped-hendelsene, kan vi bruke ALLE SERVEREN. Bruk DATABASE hvis avtrekkeren utløses på databasescoped-hendelser

ddl_trigger_option: Den spesifiserer ENCRYPTION og / eller EXECUTE AS klausul.

event_type | event_group: Event_group er en gruppe av event_type-hendelser som DDL_TABLE_EVENTS & Event_type indikerer en DDL-hendelse som får utløseren til å skyte, for eksempel ALTER_TABLE, CREATE_TABLE, etc.

Eksempel:

Utløs utførelse som svar på CREATE_TABLE DDL-hendelsen.

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

Sjekk om avtrekkeren er opprettet under databasetriggermappen, og hvis du ikke får den, kan du oppdatere mappen (Database Trigger).

3. Databasehendelse

Det kan brukes til alle DB-hendelser som LOGON, LOGOFF, Suspend, Database-oppstart, Database Shut down

syntaks:

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

trigger_name er å spesifisere det definerte navnet på triggeren etter CREATE TRIGGER-nøkkelordene.

database_event i utgangspunktet hendelse forekommer i databaser som logoff, logg inn, avslutning, etc. Vi kan velge hvilken database eller skjema denne utløseren vil fungere.

Eksempel: Avlogging-trigger

Her kan vi demonstrere LOGOFF Database Event Trigger. Denne utløseren vil opprette én post i en tabell (logoff) når noen kobler fra.
Denne utløseren vil registrere brukerens navn og tidspunktet for frakobling.

Opprette et logo-bord:

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

Opprette en Logoff Trigger:

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

Her i utløseren over har vi opprettet Tigger for å overvåke avloggingen til enhver bruker. Denne utløseren vil bli utført etterpålogging av databasebrukere. Avloggingstabell lagrer noen detaljer Brukernavn og det er logotid (Du kan bestemme detaljer etter krav).

På samme måte kan vi lage en annen trigger som vil overvåke og lagre innloggingsdetaljer for en bestemt database. Utløser av databaser er nyttige i feilsøking.
Alle tabellenavn er kravspesifikke, vi kan endre navnene deres iht. Krav.

Fordel med triggere i PL / SQL

  • Bra for tilsynsstier.
  • Bra for å manipulere data.
  • Håndheve komplekse sikkerhetsordninger.
  • Håndheve forretningsregler.
  • Hindre endringer i database og skjema.
  • PL / SQL-koden er kortere ved å bruke triggere.
  • Hold oversikt over endringene i databasetabeller, skjema- og DB-tabeller.
  • Administrering av handlingsposter i databasen er nyttig i feilsøking.
  • Ingen grunn til å sjekke endringene i databasen manuelt, utløseren tar alltid handling for en bestemt hendelse.

Konklusjon

Her er dette kapittelet, vi har lært om typer trigger som DDL, DML og Database event triggers. Vi har også lært mens en DDL-trigger kan brukes til INSERT, UPDATE, DELETE, osv. Uttalelser og DML-triggere er designet for Create, Alter, Drop, etc … i databasetabeller, men databasevirksomhetsutløsere fungerer når det er noen påloggingsavlogging, Suspend, oppstart av database utført i database.

Syntaks for hver trigger er lett å forstå, og den kan enkelt konverteres til PL / SQL-kode. PL / SQL-program, for eksempel avlogging utløst, har gitt en oversikt over hvordan databasetrigger vil fungere i tilfelle brukerlogger fra databasen. I DML Trigger har vi demonstrert hvordan ETTER Trigger vil fungere når det er en ny oppføring av en ny ansatt. DDL-utløsere er nyttige for å forhindre spesielle endringer i database og skjema.

Anbefalte artikler

Dette er en guide til triggere i PL / SQL. Her diskuterer vi Hvordan lage triggere i PL / SQL med eksempler og fordeler. Du kan også se på den følgende artikkelen.

  1. Markører i PL / SQL
  2. CASE-uttalelse i PL / SQL
  3. Hva er PL / SQL?
  4. PL / SQL-kommandoer
  5. Primær nøkkel vs utenlandsk nøkkel | Topp forskjeller