Introducere

Crearea și optimizarea triggerelor în SQL Server

Florin Angelescu

Instructor

Ce este un trigger?

  • Tip special de procedură stocată
  • Executat când apare un eveniment în serverul bazei de date

Cum funcționează un trigger

Crearea și optimizarea triggerelor în SQL Server

Tipuri de trigger (după comenzile T-SQL)

  • Triggere Data Manipulation Language (DML)
    • Instrucțiuni INSERT, UPDATE sau DELETE
  • Triggere Data Definition Language (DDL)
    • Instrucțiuni CREATE, ALTER sau DROP
  • Triggere de autentificare
    • Evenimente LOGON
Crearea și optimizarea triggerelor în SQL Server

Tipuri de trigger (după comportament)

  • Trigger AFTER

    • Instrucțiunea originală se execută
    • Instrucțiuni suplimentare sunt declanșate
  • Exemple de utilizare

    • Reindexare după o inserare masivă
    • Notificarea administratorului la actualizarea datelor
Crearea și optimizarea triggerelor în SQL Server

Tipuri de trigger (după comportament)

  • Trigger INSTEAD OF

    • Instrucțiunea originală este blocată
    • O instrucțiune de înlocuire este executată în locul ei
  • Exemple de utilizare

    • Prevenirea inserărilor
    • Prevenirea actualizărilor
    • Prevenirea ștergerilor
    • Prevenirea modificărilor obiectelor
    • Notificarea administratorului
Crearea și optimizarea triggerelor în SQL Server

Definirea unui trigger (cu AFTER)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER ProductsTrigger

-- The trigger needs to be attached to a table ON Products
-- The trigger behavior type AFTER INSERT
-- The beginning of the trigger workflow AS
-- The action executed by the trigger PRINT ('An insert of data was made in the Products table.');
Crearea și optimizarea triggerelor în SQL Server

Definirea unui trigger (cu INSTEAD OF)

-- Create the trigger by giving it a descriptive name
CREATE TRIGGER PreventDeleteFromOrders
-- The trigger needs to be attached to a table
ON Orders
-- The trigger behavior type
INSTEAD OF DELETE
-- The beginning of the trigger workflow
AS
-- The action executed by the trigger
PRINT ('You are not allowed to delete rows from the Orders table.');
Crearea și optimizarea triggerelor în SQL Server

AFTER vs. INSTEAD OF

CREATE TRIGGER MyFirstAfterTrigger
ON Table1
-- Triggered after 
-- the firing event (UPDATE)
AFTER UPDATE
AS
{trigger_actions_section};
CREATE TRIGGER MyFirstInsteadOfTrigger
ON Table2
-- Triggered instead of 
-- the firing event (UPDATE)
INSTEAD OF UPDATE
AS
{trigger_actions_section};
Crearea și optimizarea triggerelor în SQL Server

Să exersăm!

Crearea și optimizarea triggerelor în SQL Server

Preparing Video For Download...