Introduktion til triggere i PL / SQL

Databasetriggere er PL / SQL-koden, der udføres baseret på en hændelse i databasen, såsom INSERT, UPDATE, Alter, Drop, Login, Logoff osv. Databasetrigger hjælper os med at holde SQL-koder enkle og korte. Databasetriggere er nyttige til at styre alle ændringer og holde styr på alle disse ændringer ved hjælp af opdatering, sletning, ændring, login, logoff osv. I database, databaseskemaer og dens tabeller.

Vi har 3 typer DB-triggere:

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

2. DDL (Data Definition Language): Denne trigger køres på Create, Alter, Drop, Analyse, Audit, Grant osv.

3. Databasehændelse: Udførelse af DB-hændelsestriggere baseret på LOGON, LOGOFF, Suspend, database-opstart, Database Shutdown og andre DB-fejl.

Her er en mere egenskab ved DB Triggers:

En DB-trigger: Det er PL / SQL-kode, der er knyttet til en tabelvisning eller DB-begivenhed.
Køres baseret på DB-aktivitet

  • Før / Efter INDSÆT, OPDATERER, SLET.
  • Udføres én gang pr. Triggerhændelser eller en gang pr. Række påvirket af triggeren.

Udfør baseret på opstart / nedlukning / systemfejl / nedlukning af dataindlæsning.

Sådan oprettes triggere i PL / SQL?

Her er følgende trin til at oprette triggere i PL / SQL

1. DML-triggere

Denne trigger er yderligere opdelt i to typer:

  • Efter triggere / For triggere
  • I stedet for triggere

EFTER trigger brænder efter at have udløst handling. DELETE, UPDATE og INSERT udsagn er et eksempel på After triggers.
INSTEAD Af udløser handlinger i stedet for handlingen. SLET, UPDATE og INSERT udsagn er også en del af det.

Eksempel:

Vi bruger tabellerne Employee and EmployeeAudit til vores eksempler.

SQL Script for at oprette en medarbejdertabel:

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)

Medarbejdertabel

SQL-script til oprettelse af medarbejderAudit-tabel:

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

vi fanger ID og dato og klokkeslæt, når der tilføjes en ny medarbejder i tabellen EmployeeAudit. Dette er det nemmeste program til at definere AFTER TRIGGER for INSERT-begivenheden.

2. DDL-triggere

Det bruges hovedsageligt til at forhindre bestemte ændringer i dit databaseskema

Syntaks

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

trigger_name er at specificere det definerede navn på triggeren efter CREATE TRIGGER-nøgleordene. du behøver heller ikke at specificere et databaseskema, fordi det ikke er relateret til en faktisk databasetabel eller -visning.

Database | All server: Hvis triggeren udløses på server-scoped-begivenheder, end vi kan bruge ALLE SERVER. Brug DATABASE, hvis udløseren udløses på database-scoped-begivenheder

ddl_trigger_option: Det specificerer ENCRYPTION og / eller EXECUTE AS-klausul.

event_type | event_group: Event_group er en gruppe af event_type-begivenhed såsom DDL_TABLE_EVENTS & Event_type indikerer en DDL-begivenhed, der får triggeren til at skyde, såsom ALTER_TABLE, CREATE_TABLE osv.

Eksempel:

Trigger-eksekvering som svar på CREATE_TABLE DDL-begivenheden.

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

Kontroller, om udløseren er oprettet under databasetrigermappen, og hvis du ikke får den, skal du opdatere mappen (Database Trigger).

3. Databasehændelse

Det kan bruges til alle DB-begivenheder såsom LOGON, LOGOFF, Suspend, Database-opstart, Database Shut down

Syntaks:

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

trigger_name er at specificere det definerede navn på triggeren efter CREATE TRIGGER-nøgleordene.

database_event dybest set sker der begivenheder i databaser som logoff, log ind, lukning osv. Vi kan vælge, hvilken database eller skema denne trigger fungerer.

Eksempel: Logoff-trigger

Her kan vi demonstrere LOGOFF Database Event Trigger. Denne trigger skaber en post i en tabel (logoff), når nogen kobler fra.
Denne trigger registrerer brugerens navn og tidspunktet for afbrydelse.

Oprettelse af en logoff-tabel:

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

Oprettelse af 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 ovennævnte trigger har vi oprettet Tigger til at overvåge Logoff for enhver bruger. Denne trigger får eksekveret loggning efter databasebrugere. Logoff-tabel gemmer nogle detaljer Brugernavn, og det er logotid (Du kan bestemme detaljer efter krav).

På samme måde kan vi oprette en anden trigger, der overvåger og gemmer loginoplysninger for en bestemt database. Databasehændelsestriggere er nyttige til fejlfinding.
Alle tabelnavne er kravspecifikke, vi kan ændre deres navne efter krav.

Fordel ved udløsere i PL / SQL

  • God til revisionsspor.
  • God til at manipulere data.
  • Håndhæv komplekse sikkerhedsordninger.
  • Håndhæv forretningsregler.
  • Undgå ændringer i database og skema.
  • PL / SQL-kode er kortere ved hjælp af triggere.
  • Hold styr på ændringerne i database-, skema- og DB-tabeller.
  • Håndtering af handlingsposter i databasen er nyttigt til fejlfinding.
  • Ingen grund til at kontrollere ændringerne i databasen manuelt, udløseren griber altid til handling inden for en bestemt begivenhed.

Konklusion

Her er dette kapitel, vi har lært om typer af trigger såsom DDL, DML og Database event triggers. Vi har også lært, mens en DDL-trigger kan bruges til INSERT, UPDATE, DELETE osv. Udsagn og DML-triggere er designet til Opret, Alter, Drop osv. I databasetabeller, men databasehændelsesudløsere fungerer, når der er nogen logon-logoff, Suspendér, databasestart handling udført i database.

Syntaks for hver trigger er let at forstå, og den kan let konverteres til PL / SQL-kode. PL / SQL-program, såsom Logoff triggered, har givet et overblik over, hvordan databasetriggeren vil fungere i tilfælde af, at en brugerlogo fra sin database. I DML Trigger har vi demonstreret, hvordan AFTER Trigger vil fungere, når der er kommet en ny post til enhver ny medarbejder. DDL-triggere er nyttige til at forhindre særlige ændringer i database og skema.

Anbefalede artikler

Dette er en guide til udløsere i PL / SQL. Her drøfter vi Sådan opretter du triggere i PL / SQL med eksempler og fordele. Du kan også se på den følgende artikel.

  1. Markører i PL / SQL
  2. CASE-erklæring i PL / SQL
  3. Hvad er PL / SQL?
  4. PL / SQL-kommandoer
  5. Primær nøgle vs udenlandsk nøgle | Topforskelle