Inleiding tot triggers in PL / SQL

Database-triggers zijn de PL / SQL-code die wordt uitgevoerd op basis van een gebeurtenis in de database, zoals INSERT, UPDATE, Alter, Drop, Login, Logoff, enz. Database-triggers helpen ons om de SQL-codes eenvoudig en kort te houden. Database-triggers zijn handig bij het beheren van alle wijzigingen en het bijhouden van al die wijzigingen met behulp van Update, Verwijderen, Wijzigen, inloggen, Afmelden, enz. In Database, Databaseschema's en de tabellen.

We hebben 3 soorten DB-triggers:

1. DML (Data Manipulation Language): DML-triggers worden uitgevoerd op INSERT, UPDATE & DELETE in de tabellen.

2. DDL (Data Definition Language): deze trigger wordt uitgevoerd op Create, Alter, Drop, Analyse, Audit, Grant, etc.

3. Database-gebeurtenis: uitvoering van DB-event-triggers op basis van LOGON, LOGOFF, Suspend, opstarten van de database, afsluiten van de database en andere DB-fouten.

Hier is nog een kenmerk van DB Triggers:

Een DB-trigger: het is PL / SQL-code gekoppeld aan een tabelweergave of DB-gebeurtenis.
Wordt uitgevoerd op basis van DB-activiteit

  • Voor / na, PLAATSEN, UPDATE, VERWIJDEREN.
  • Eén keer uitgevoerd per triggergebeurtenissen of eenmaal per rij die door de trigger wordt beïnvloed.

Uitvoeren op basis van opstarten / afsluiten / systeemfout / afsluiten van gegevensbelasting.

Hoe triggers te creëren in PL / SQL?

Hier zijn de volgende stappen om triggers in PL / SQL te maken

1. DML-triggers

Deze trigger is verder onderverdeeld in twee typen:

  • Na triggers / voor triggers
  • In plaats van triggers

NA trigger schiet na activering actie. DELETE, UPDATE en INSERT-instructies zijn een voorbeeld van After-triggers.
IN PLAATS VAN triggersacties in plaats van de actie. DELETE-, UPDATE- en INSERT-instructies maken hier ook deel van uit.

Voorbeeld:

We gebruiken de tabellen Employee en EmployeeAudit voor onze voorbeelden.

SQL Script om een ​​werknemerstabel te maken:

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)

Werknemers tabel

SQL Script om EmployeeAudit-tabel te maken:

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

zullen we de ID en de datum en tijd vastleggen wanneer een nieuwe werknemer wordt toegevoegd aan de EmployeeAudit-tabel. Dit is het eenvoudigste programma om NA TRIGGER te definiëren voor het INSERT-evenement.

2. DDL-triggers

Het wordt voornamelijk gebruikt om bepaalde wijzigingen in uw databaseschema te voorkomen

Syntaxis

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

trigger_name is om de gedefinieerde naam van de trigger op te geven na de CREATE TRIGGER-sleutelwoorden. ook hoeft u geen databaseschema op te geven, omdat het niet is gerelateerd aan een werkelijke databasetabel of -weergave.

Gegevensbestand | Alle servers: als de trigger wordt geactiveerd bij gebeurtenissen die door de server worden gescand, kunnen we ALLE SERVER gebruiken. Gebruik DATABASE als de trigger wordt geactiveerd bij gebeurtenissen met een databasebereik

ddl_trigger_option: het specificeert ENCRYPTION en / of EXECUTE AS-clausule.

event_type | event_group: De event_group is een groep event_type event zoals DDL_TABLE_EVENTS & Het event_type geeft een DDL-event aan waardoor de trigger wordt geactiveerd, zoals ALTER_TABLE, CREATE_TABLE, enz.

Voorbeeld:

Trigger uitvoering in reactie op de CREATE_TABLE DDL-gebeurtenis.

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

Controleer of de trigger is gemaakt in de map Database-trigger en vernieuw de map (Database-trigger) als u deze niet krijgt.

3. Database-gebeurtenis

Het kan worden gebruikt voor DB-gebeurtenissen zoals AANMELDEN, UITLOGGEN, Onderbreken, Opstarten van databases, Afsluiten van databases

Syntaxis:

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

trigger_name is om de gedefinieerde naam van de trigger op te geven na de CREATE TRIGGER-sleutelwoorden.

database_event vindt feitelijk een gebeurtenis plaats in databases zoals uitloggen, inloggen, afsluiten, enz. We kunnen selecteren welke database of schema deze trigger zal werken.

Voorbeeld: afmelding trigger

Hier kunnen we de LOGOFF Database Event Trigger demonstreren. Deze trigger maakt één record in een tabel (uitloggen) wanneer iemand de verbinding verbreekt.
Deze trigger registreert de naam van de gebruiker en het tijdstip waarop de verbinding wordt verbroken.

Een afmeldtabel maken:

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

Een afmeldtrigger maken:

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

Hier in de bovenstaande trigger hebben we Tigger gemaakt om de afmelding van elke gebruiker te controleren. Deze trigger wordt uitgevoerd na het uitloggen van database-gebruikers. Uitlogtabel zal enkele details opslaan Gebruikersnaam en het is uitlogtijd (U kunt details bepalen zoals vereist).

Op dezelfde manier kunnen we nog een trigger maken die inloggegevens voor een bepaalde database bewaakt en opslaat. Triggers van database-gebeurtenissen zijn nuttig bij het oplossen van problemen.
Alle tabelnamen zijn vereistenpecifiek, we kunnen hun namen per vereisten wijzigen.

Voordeel van triggers in PL / SQL

  • Goed voor audit trails.
  • Goed voor het manipuleren van gegevens.
  • Handhaaf complexe beveiligingsschema's.
  • Zakelijke regels handhaven.
  • Voorkom wijzigingen in de database en het schema.
  • PL / SQL-code is korter met behulp van triggers.
  • Blijf op de hoogte van de wijzigingen in Database-, Schema- en DB-tabellen.
  • Het beheren van actierecords in de database is nuttig bij het oplossen van problemen.
  • U hoeft de wijzigingen in de database niet handmatig te controleren, de trigger onderneemt altijd zelf actie bij een bepaalde gebeurtenis.

Conclusie

Hier is dit hoofdstuk, we hebben geleerd over typen triggers zoals DDL-, DML- en database-triggers. We hebben ook geleerd dat een DDL-trigger kan worden gebruikt voor INSERT, UPDATE, DELETE, enz. Statements en DML-triggers zijn ontworpen voor Create, Alter, Drop, enz. In databasetabellen, maar triggers voor database-events werken wanneer er een aanmelding is, Onderbreken, database-opstartactie uitgevoerd in database.

De syntaxis van elke trigger is gemakkelijk te begrijpen en kan eenvoudig worden omgezet in PL / SQL-code. PL / SQL-programma, zoals geactiveerd Afmelden, heeft een overzicht gegeven van de manier waarop de database-trigger werkt in het geval dat een gebruiker zich afmeldt uit de database. In DML Trigger hebben we aangetoond hoe NA de Trigger zal werken zodra er een nieuwe ingang is voor een nieuwe medewerker. DDL-triggers zijn nuttig om bepaalde wijzigingen in de database en het schema te voorkomen.

Aanbevolen artikelen

Dit is een gids voor triggers in PL / SQL. Hier bespreken we hoe Triggers in PL / SQL te maken met voorbeelden en voordelen. U kunt ook het volgende artikel bekijken.

  1. Cursors in PL / SQL
  2. CASE-instructie in PL / SQL
  3. Wat is PL / SQL?
  4. PL / SQL-opdrachten
  5. Primaire sleutel versus buitenlandse sleutel | Topverschillen