DDL-triggers

Triggers in SQL Server bouwen en optimaliseren

Florin Angelescu

Instructor

Definitie en eigenschappen

DML-triggers

  • gebeurtenissen bij DML-statements INSERT, UPDATE, DELETE
  • gebruikt met AFTER of INSTEAD OF
  • gekoppeld aan tabellen of views
  • speciale tabellen inserted en deleted

DDL-triggers

  • gebeurtenissen bij DDL-statements CREATE, ALTER, DROP
  • alleen met AFTER
  • gekoppeld aan databases of servers
  • geen speciale tabellen
Triggers in SQL Server bouwen en optimaliseren

AFTER en FOR

CREATE TRIGGER DatabaseChangeLog
FOR CREATE_TABLE
[...]
Triggers in SQL Server bouwen en optimaliseren

AFTER en FOR

CREATE TRIGGER TrackDatabaseTables
FOR CREATE_TABLE
[...]

AFTER = FOR

Triggers in SQL Server bouwen en optimaliseren

Vereisten voor DDL-triggers

  • Doelobject (server of database)
  • Omschrijving van de trigger
  • Trigger-events (DDL)
  • Triggernaam
  • DATABASE
  • Logtabel met definitiewijzigingen
  • CREATE_TABLE,ALTER_TABLE,DROP_TABLE
  • TrackTableChanges
Triggers in SQL Server bouwen en optimaliseren

DDL-triggerdefinitie

CREATE TRIGGER TrackTableChanges

ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS INSERT INTO TablesChangeLog (EventData, ChangedBy) VALUES (EVENTDATA(), USER);
Triggers in SQL Server bouwen en optimaliseren

Triggergebeurtenissen voor DML-triggers blokkeren

CREATE TRIGGER PreventTableDeletion
ON DATABASE
FOR DROP_TABLE

AS RAISERROR ('Je mag geen tabellen uit deze database verwijderen.', 16, 1); ROLLBACK;
Triggers in SQL Server bouwen en optimaliseren

Laten we oefenen!

Triggers in SQL Server bouwen en optimaliseren

Preparing Video For Download...