Introducere pentru declanșări în PL / SQL

Declanșatorii bazelor de date sunt codul PL / SQL care se execută pe baza unui eveniment din baza de date, cum ar fi INSERT, UPDATE, Alter, Drop, Login, Logoff, etc. Declanșatoarele de baze de date ne ajută să menținem codurile SQL simple și scurte. Declanșatoarele bazelor de date sunt utile în gestionarea tuturor modificărilor și în evidența tuturor acestor modificări folosind Actualizare, Ștergere, Modificare, autentificare, Logoff etc. în Baza de date, schemele de baze de date și tabelele sale.

Avem 3 tipuri de declanșatoare DB:

1. DML (Data Manipulation Language): declanșările DML se execută pe INSERT, UPDATE & DELETE în tabele.

2. DDL (Language Definition Language): Acest declanșator se execută pe Create, Alter, Drop, Analyze, Audit, Grant etc.

3. Evenimentul bazei de date: Executarea declanșărilor de evenimente DB bazate pe LOGON, LOGOFF, Suspendare, pornirea bazei de date, Oprirea bazei de date și alte erori DB.

Iată încă o caracteristică a declanșatoarelor DB:

Un declanșator DB: este cod PL / SQL legat de o vizualizare de tabel sau eveniment DB.
Execută pe baza activității DB

  • Înainte / după, INSERT, ACTUALIZARE, Ștergeți.
  • Executat o dată pe declanșarea evenimentelor sau o dată pe rând afectat de declanșator.

Executați în funcție de pornire / oprire / eroare de sistem / oprire de încărcare a datelor.

Cum să creați declanșatoare în PL / SQL?

Iată următorii pași pentru a crea declanșatori în PL / SQL

1. Declanșări DML

Acest declanșator este împărțit în două tipuri:

  • După declanșatoare / Pentru declanșatoare
  • În loc de declanșatoare

DUPĂ declanșarea se declanșează după declanșarea acțiunii. Instrucțiunile DELETE, UPDATE și INSERT sunt un exemplu al declanșatorilor After.
INSTEAD Of declanșează acte în loc de acțiune. Instrucțiunile DELETE, UPDATE și INSERT fac parte și din acestea.

Exemplu:

Vom folosi tabelele Angajat și AngajatAudit pentru exemplele noastre.

Script SQL pentru a crea un tabel angajați:

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)

Tabelul angajaților

Script SQL pentru a crea tabelul EmployeeAudit:

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

vom capta ID-ul și data și ora Ori de câte ori este adăugat un nou angajat în tabelul EmployeeAudit. Acesta este cel mai simplu program de definit AFTER TRIGGER pentru evenimentul INSERT.

2. Declanșatoare DDL

Este utilizat în principal pentru a preveni modificări particulare ale schemei bazei de date

Sintaxă

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

trigger_name este de a specifica numele definit al declanșatorului după cuvintele cheie CREATE TRIGGER. de asemenea, nu este necesar să specificați o schemă a bazei de date, deoarece nu este legată de o tabelă sau o vizualizare reală a bazei de date.

Baza de date | All Server: Dacă declanșatorul declanșează evenimentele orientate pe server decât putem folosi ALL SERVER. Folosiți DATABASE dacă declanșatorul declanșează evenimente bazate pe baza de date

ddl_trigger_option: specifică clauza ENCRYPTION și / sau EXECUTE AS.

eveniment_tip | event_group: Event_group este un grup de evenimente tip tip eveniment cum ar fi DDL_TABLE_EVENTS & Event_type indică un eveniment DDL care determină declanșarea declanșării, cum ar fi, ALTER_TABLE, CREATE_TABLE etc.

Exemplu:

Execuție declanșatoare ca răspuns la evenimentul CREATE_TABLE DDL.

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

Verificați dacă declanșatorul a fost creat în folderul declanșatorului bazei de date și dacă nu îl primiți, reîncărcați folderul (declanșatorul bazei de date).

3. Evenimentul bazei de date

Poate fi folosit pentru orice eveniment DB, cum ar fi LOGON, LOGOFF, Suspendare, pornire bază de date, închidere bază de date

Sintaxă:

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

trigger_name este de a specifica numele definit al declanșatorului după cuvintele cheie CREATE TRIGGER.

database_event practic se întâmplă în baze de date cum ar fi deconectare, logare, oprire, etc. Putem selecta baza de date sau schema care va funcționa acest declanșator.

Exemplu: Declanșare deconectare

Aici putem demonstra declanșatorul de evenimente al bazei de date LOGOFF. Acest declanșator va crea o înregistrare într-un tabel (deconectare) atunci când oricine se deconectează.
Acest declanșator va înregistra numele utilizatorului și momentul deconectării.

Crearea unui tabel de deconectare:

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

Crearea unui declanșator de deconectare:

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

Aici, în declanșatorul de mai sus, am creat Tigger pentru a monitoriza Deconectarea oricărui utilizator. Acest declanșator va fi executat după deconectarea utilizatorilor bazei de date. Tabela de deconectare va stoca unele detalii Numele de utilizator și este momentul de închidere (Puteți decide detaliile conform cerințelor).

În același mod, putem crea un alt declanșator care va monitoriza și stoca detaliile de conectare pentru orice bază de date particulară. Declanșatorii evenimentelor din baza de date sunt de ajutor în depanarea.
Toate numele tabelelor sunt specifice cerințelor, le putem schimba numele conform cerințelor.

Avantajul declanșatorilor în PL / SQL

  • Bine pentru trasee de audit.
  • Bine pentru manipularea datelor.
  • Aplicați scheme complexe de securitate.
  • Respectă regulile de afaceri.
  • Împiedicați schimbările în baza de date și schema.
  • Codul PL / SQL este mai scurt folosind declanșatoarele.
  • Urmăriți modificările din bazele de date, schema și tabele DB.
  • Gestionarea înregistrărilor de acțiune din baza de date este utilă în soluționarea problemelor.
  • Nu este necesară verificarea manuală a modificărilor, baza de date declanșează întotdeauna acțiunea în sine asupra unui anumit eveniment.

Concluzie

Iată acest capitol, am aflat despre tipurile de declanșatoare, cum ar fi declanșatoarele de evenimente DDL, DML și Baza de date. De asemenea, am aflat că un declanșator DDL poate fi folosit pentru INSERT, ACTUALIZARE, DELETE, etc. Declarațiile și declanșatoarele DML sunt proiectate pentru Creare, modificare, picătură, etc. în cadrul tabelelor de baze de date, dar declanșarea evenimentelor bazei de date funcționează atunci când există un Logon Logoff, Suspendare, acțiune de pornire a bazei de date efectuată în baza de date.

Sintaxa fiecărui declanșator este ușor de înțeles și poate fi transformată ușor în cod PL / SQL. Programul PL / SQL, cum ar fi declanșarea deconectării, a oferit o imagine de ansamblu asupra modului de funcționare a declanșatorului bazei de date în cazul în care orice utilizator va fi închis din baza de date. În DML Trigger, am demonstrat cum va funcționa AFTER Trigger odată ce va exista o nouă intrare a oricărui nou angajat. DDL Declanșatoarele sunt utile în prevenirea oricăror modificări particulare ale bazei de date și schemei.

Articole recomandate

Acesta este un ghid pentru declanșări în PL / SQL. Aici vom discuta Cum să creăm declanșatoare în PL / SQL cu exemple și avantaje. De asemenea, vă puteți uita la articolul următor.

  1. Cursoare în PL / SQL
  2. Instrucțiune CASE în PL / SQL
  3. Ce este PL / SQL?
  4. Comenzi PL / SQL
  5. Cheie primară și cheie străină | Diferențe de top