Triggere DDL

Crearea și optimizarea triggerelor în SQL Server

Florin Angelescu

Instructor

Definiție și proprietăți

Triggere DML

  • evenimente asociate instrucțiunilor DML INSERT, UPDATE, DELETE
  • utilizate cu AFTER sau INSTEAD OF
  • atașate la tabele sau vizualizări
  • tabele speciale inserted și deleted

Triggere DDL

  • evenimente asociate instrucțiunilor DDL CREATE, ALTER, DROP
  • utilizate doar cu AFTER
  • atașate la baze de date sau servere
  • fără tabele speciale
Crearea și optimizarea triggerelor în SQL Server

AFTER și FOR

CREATE TRIGGER DatabaseChangeLog
FOR CREATE_TABLE
[...]
Crearea și optimizarea triggerelor în SQL Server

AFTER și FOR

CREATE TRIGGER TrackDatabaseTables
FOR CREATE_TABLE
[...]

AFTER = FOR

Crearea și optimizarea triggerelor în SQL Server

Condiții prealabile pentru triggere DDL

  • Obiectul țintă (server sau bază de date)
  • Descrierea triggerului
  • Evenimente de declanșare (DDL)
  • Numele triggerului
  • DATABASE
  • Tabel de jurnal cu modificări de definiție
  • CREATE_TABLE,ALTER_TABLE,DROP_TABLE
  • TrackTableChanges
Crearea și optimizarea triggerelor în SQL Server

Definirea unui trigger DDL

CREATE TRIGGER TrackTableChanges

ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS INSERT INTO TablesChangeLog (EventData, ChangedBy) VALUES (EVENTDATA(), USER);
Crearea și optimizarea triggerelor în SQL Server

Prevenirea evenimentelor declanșatoare pentru triggere DML

CREATE TRIGGER PreventTableDeletion
ON DATABASE
FOR DROP_TABLE

AS RAISERROR ('You are not allowed to remove tables from this database.', 16, 1); ROLLBACK;
Crearea și optimizarea triggerelor în SQL Server

Vamos praticar!

Crearea și optimizarea triggerelor în SQL Server

Preparing Video For Download...