Úvod do triggerů v PL / SQL

Spouštěče databáze jsou kód PL / SQL, který se spouští na základě události v databázi, jako je INSERT, UPDATE, Alter, Drop, Login, Logff atd. Spouštěče databáze nám pomáhají udržovat kódy SQL jednoduché a krátké. Spouštěče databáze jsou užitečné při správě všech změn a sledování všech těchto změn pomocí aktualizace, odstranění, změny, přihlášení, odhlášení atd. V databázi, schématech databáze a jejích tabulkách.

Máme 3 typy spouštěčů DB:

1. DML (Data Manipulation Language): Spouštěče DML se spouštějí v INSERT, UPDATE & DELETE v tabulkách.

2. DDL (Data Definition Language): Tento spouštěč se spouští při vytvoření, změně, přetažení, analýze, auditu, grantu atd.

3. Databázová událost: Spuštění spouštěčů událostí DB na základě LOGON, LOGOFF, Suspend, spuštění databáze, vypnutí databáze a dalších chyb DB.

Zde je další charakteristika DB Triggers:

Spouštěč DB: Jedná se o kód PL / SQL spojený s tabulkovým zobrazením nebo událostí DB.
Spouští se na základě aktivity DB

  • Před / po, INSERT, UPDATE, DELETE.
  • Provádí se jednou na spouštěcí události nebo jednou na řádek ovlivněný spouštěčem.

Provádět na základě spuštění / vypnutí / systémové chyby / vypnutí datového zatížení.

Jak vytvořit spouštěče v PL / SQL?

Zde jsou následující kroky k vytvoření spouštěče v PL / SQL

1. Spouštěče DML

Tento spouštěč je dále rozdělen na dva typy:

  • Po spuštění / Pro spouštěče
  • Místo spouště

PO POŽÁRU se spustí spouštění po spuštění akce. Příkazy DELETE, UPDATE a INSERT jsou příkladem spouštěče After.
INSTEAD Of triggers namísto akce. Součástí jsou také příkazy DELETE, UPDATE a INSERT.

Příklad:

Pro naše příklady použijeme tabulky Zaměstnanec a ZaměstnanecAudit.

SQL Script k vytvoření tabulky Zaměstnanec:

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)

Tabulka zaměstnanců

SQL Script k vytvoření tabulky EmployeeAudit:

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

zachytíme ID a datum a čas Kdykoli je v tabulce EmployeeAudit přidán nový zaměstnanec. Toto je nejjednodušší program pro definování AFTER TRIGGER pro událost INSERT.

2. DDL spouštěče

Používá se hlavně k zabránění konkrétním změnám v databázovém schématu

Syntax

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

trigger_name je Určit definovaný název spouštěče po klíčových slovech CREATE TRIGGER. Také nemusíte specifikovat schéma databáze, protože nesouvisí se skutečnou databázovou tabulkou nebo pohledem.

Databáze | Celý server: Pokud se spouštěč spustí na událostech zaměřených na server, můžeme použít VŠE SERVER. Použijte DATABASE, pokud spouštěč spustí události s databázovým rozsahem

ddl_trigger_option: Určuje klauzuli ENCRYPTION a / nebo EXECUTE AS.

event_type | event_group: Event_group je skupina událostí event_type, jako je DDL_TABLE_EVENTS & Event_type označuje událost DDL, která způsobí spuštění spouště, jako například ALTER_TABLE, CREATE_TABLE atd.

Příklad:

Spuštění spouštění v reakci na událost CREATE_TABLE DDL.

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

Zkontrolujte, zda byl spouštěč vytvořen ve složce Spouštěcí databáze a pokud jej neobdržíte, aktualizujte složku (Database Trigger).

3. Databázová událost

Může být použit pro jakékoli události DB, jako je LOGON, LOGOFF, Suspend, spuštění databáze, vypnutí databáze

Syntax:

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

trigger_name je Určit definovaný název spouštěče po klíčových slovech CREATE TRIGGER.

database_event v podstatě nastane v Databázích, jako je odhlášení, přihlášení, vypnutí atd. Můžeme vybrat, kterou databázi nebo schéma bude toto spouštění fungovat.

Příklad: Aktivace odhlášení

Zde můžeme demonstrovat spouštěč událostí databáze LOGOFF. Tento spouštěč vytvoří jeden záznam v tabulce (odhlášení), když se někdo odpojí.
Tento spoušť zaznamená jméno uživatele a čas odpojení.

Vytvoření tabulky odhlášení:

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

Vytvoření spouštěče odhlášení:

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

Zde ve výše uvedeném triggeru jsme vytvořili Tigger pro sledování odhlášení jakéhokoli uživatele. Tento trigger bude proveden po odhlášení uživatelů databáze. Tabulka odhlášení ukládá některé podrobnosti Uživatelské jméno a je čas odhlášení (Můžete se rozhodnout o podrobnostech podle požadavku).

Stejným způsobem můžeme vytvořit další spouštěč, který bude sledovat a ukládat přihlašovací údaje pro jakoukoli konkrétní databázi. Při řešení potíží jsou užitečné spouštěče událostí databáze.
Všechny názvy tabulek jsou specifické podle požadavků, jejich názvy můžeme měnit podle požadavků.

Výhoda spouštěčů v PL / SQL

  • Dobré pro auditní stezky.
  • Dobré pro manipulaci s daty.
  • Vynutit složitá bezpečnostní schémata.
  • Prosazujte obchodní pravidla.
  • Zabraňte změnám v databázi a schématu.
  • PL / SQL kód je pomocí spouštěčů kratší.
  • Sledujte změny v tabulkách databáze, schématu a DB.
  • Při řešení problémů je užitečné spravovat záznamy akcí v databázi.
  • Není nutné kontrolovat změny v databázi ručně, spoušť vždy provede akci sama při výskytu konkrétní události.

Závěr

V této kapitole jsme se dozvěděli o typech spouštěčů, jako jsou spouštěče DDL, DML a spouštěče událostí databáze. Dozvěděli jsme se také, že spouštěč DDL lze použít pro INSERT, UPDATE, DELETE atd. Prohlášení a spouštěče DML jsou navrženy pro vytvoření, změnu, přetažení atd.… V databázových tabulkách, ale spouštěče událostí databáze fungují, když existuje jakékoli přihlášení, Pozastavit, akce spuštění databáze v databázi.

Syntaxe každého spouštěče je snadno srozumitelná a lze ji snadno převést do kódu PL / SQL. Program PL / SQL, jako je spuštěno odhlášení, poskytl přehled o tom, jak bude spouštěč databáze fungovat v případě odhlášení uživatele ze své databáze. V DML Trigger jsme ukázali, jak AFTER Trigger bude fungovat, jakmile bude nový vstup nového zaměstnance. Spouštěče DDL jsou užitečné při předcházení jakýmkoli konkrétním změnám v databázi a schématu.

Doporučené články

Toto je průvodce po triggerech v PL / SQL. Zde diskutujeme, jak vytvořit spouštěče v PL / SQL, s příklady a výhodami. Můžete se také podívat na následující článek.

  1. Kurzory v PL / SQL
  2. Příkaz CASE v PL / SQL
  3. Co je PL / SQL?
  4. Příkazy PL / SQL
  5. Primární klíč vs. cizí klíč Nejlepší rozdíly