Introduzione ai trigger in PL / SQL

I trigger di database sono il codice PL / SQL che viene eseguito in base a un evento nel database come INSERT, UPDATE, Alter, Drop, Login, Logoff, ecc. I trigger di database ci aiutano a mantenere semplici e brevi i codici SQL. I trigger di database sono utili nella gestione di tutte le modifiche e nel tenere traccia di tutte quelle modifiche utilizzando Aggiorna, Elimina, Modifica, login, Disconnessione, ecc. In Database, schemi di database e relative tabelle.

Abbiamo 3 tipi di trigger DB:

1. DML (Data Manipulation Language): i trigger DML vengono eseguiti su INSERT, UPDATE & DELETE nelle tabelle.

2. DDL (Data Definition Language): questo trigger viene eseguito su Crea, Modifica, Rilascia, Analizza, Controlla, Concedi, ecc.

3. Evento database: esecuzione di trigger di eventi DB basati su LOGON, LOGOFF, Suspend, avvio database, arresto database e altri errori DB.

Ecco un'altra caratteristica dei trigger DB:

Un trigger DB: è il codice PL / SQL collegato a una vista tabella o evento DB.
Esegue in base all'attività del DB

  • Prima / Dopo, INSERISCI, AGGIORNA, ELIMINA.
  • Eseguito una volta per eventi trigger o una volta per riga interessati dal trigger.

Eseguire in base all'avvio / arresto / errore di sistema / arresto del caricamento dei dati.

Come creare trigger in PL / SQL?

Ecco i seguenti passaggi per creare trigger in PL / SQL

1. Trigger DML

Questo trigger è ulteriormente suddiviso in due tipi:

  • Dopo i trigger / Per i trigger
  • Invece di trigger

DOPO l'attivazione del grilletto dopo l'attivazione dell'azione. Le istruzioni DELETE, UPDATE e INSERT sono un esempio di trigger After.
INSTEAD Of trigger trigger invece dell'azione. Anche le istruzioni DELETE, UPDATE e INSERT ne fanno parte.

Esempio:

Useremo le tabelle Employee e EmployeeAudit per i nostri esempi.

Script SQL per creare una tabella Employee:

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)

Tabella dei dipendenti

Script SQL per creare la tabella EmployeeAudit:

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

acquisiremo l'ID e la data e l'ora Ogni volta che un nuovo dipendente viene aggiunto nella tabella EmployeeAudit. Questo è il programma più semplice per definire AFTER TRIGGER per l'evento INSERT.

2. Trigger DDL

Viene utilizzato principalmente per impedire modifiche particolari allo schema del database

Sintassi

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

trigger_name deve specificare il nome definito del trigger dopo le parole chiave CREATE TRIGGER. inoltre, non è necessario specificare uno schema del database perché non è correlato a una tabella o vista del database effettiva.

Database | Tutti i server: se il trigger si attiva sugli eventi con ambito server, allora possiamo usare TUTTI I SERVER. Utilizzare DATABASE se il trigger si attiva su eventi con ambito database

ddl_trigger_option: specifica la clausola ENCRYPTION e / o EXECUTE AS.

tipo_evento | event_group: event_group è un gruppo di eventi event_type come DDL_TABLE_EVENTS & event_type indica un evento DDL che provoca l'attivazione del trigger come, ALTER_TABLE, CREATE_TABLE, ecc.

Esempio:

Attiva l'esecuzione in risposta all'evento DDL CREATE_TABLE.

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

Controlla se il trigger è stato creato nella cartella Trigger database e se non lo ottieni aggiorna la cartella (Trigger database).

3. Evento database

Può essere utilizzato per qualsiasi evento DB come LOGON, LOGOFF, Suspend, avvio del database, arresto del database

Sintassi:

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

trigger_name deve specificare il nome definito del trigger dopo le parole chiave CREATE TRIGGER.

database_event fondamentalmente si verifica un evento nei database come disconnessione, accesso, spegnimento, ecc. Possiamo selezionare quale database o schema questo trigger funzionerà.

Esempio: trigger di disconnessione

Qui possiamo dimostrare il trigger di eventi del database LOGOFF. Questo trigger creerà un record in una tabella (disconnessione) quando qualcuno si disconnette.
Questo trigger registra il nome dell'utente e l'ora della disconnessione.

Creazione di una tabella di disconnessione:

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

Creazione di un trigger di disconnessione:

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

Qui nel trigger sopra, abbiamo creato Tigger per monitorare la disconnessione di qualsiasi utente. Questo trigger verrà eseguito dopo la disconnessione degli utenti del database. La tabella di disconnessione memorizzerà alcuni dettagli Nome utente e tempo di disconnessione (È possibile decidere i dettagli secondo il requisito).

Allo stesso modo, possiamo creare un altro trigger che monitorerà e memorizzerà i dettagli di accesso per un determinato database. I trigger di eventi del database sono utili per la risoluzione dei problemi.
Tutti i nomi delle tabelle sono specifici dei requisiti, possiamo cambiarne i nomi secondo i requisiti.

Vantaggio dei trigger in PL / SQL

  • Ottimo per audit trail.
  • Buono per manipolare i dati.
  • Applicare schemi di sicurezza complessi.
  • Applicare le regole aziendali.
  • Impedire modifiche nel database e nello schema.
  • Il codice PL / SQL è più breve utilizzando i trigger.
  • Tieni traccia delle modifiche nelle tabelle di database, schemi e DB.
  • La gestione dei record di azioni nel database è utile per la risoluzione dei problemi.
  • Non è necessario controllare manualmente le modifiche nel database, il trigger agisce sempre da solo su un determinato evento.

Conclusione

Ecco questo capitolo, abbiamo appreso i tipi di trigger come trigger di eventi DDL, DML e Database. Abbiamo anche appreso che un trigger DDL può essere utilizzato per INSERT, UPDATE, DELETE, ecc. Dichiarazioni e trigger DML sono progettati per creare, modificare, eliminare, ecc … all'interno delle tabelle del database ma i trigger di eventi del database funzionano quando è presente una disconnessione di accesso, Sospendi, azione di avvio del database eseguita nel database.

La sintassi di ciascun trigger è di facile comprensione e può essere facilmente convertita in codice PL / SQL. Programma PL / SQL come Logoff attivato ha fornito una panoramica di come funzionerà l'attivazione del Database nel caso in cui un utente si disconnetta dal suo Database. In DML Trigger, abbiamo dimostrato come funzionerà AFTER Trigger una volta che c'è una nuova voce di qualsiasi nuovo dipendente. I trigger DDL sono utili per prevenire eventuali modifiche particolari nel database e nello schema.

Articoli consigliati

Questa è una guida ai trigger in PL / SQL. Qui discutiamo come creare trigger in PL / SQL con esempi e vantaggi. Puoi anche consultare il seguente articolo.

  1. Cursori in PL / SQL
  2. Dichiarazione CASE in PL / SQL
  3. Che cos'è PL / SQL?
  4. Comandi PL / SQL
  5. Chiave primaria vs chiave esterna | Differenze principali