DDL-triggers

Bygga och optimera triggers i SQL Server

Florin Angelescu

Instructor

Definition och egenskaper

DML-triggers

  • händelser kopplade till DML-satser INSERT, UPDATE, DELETE
  • används med AFTER eller INSTEAD OF
  • kopplas till tabeller eller vyer
  • inserted och deleted är specialtabeller

DDL-triggers

  • händelser kopplade till DDL-satser CREATE, ALTER, DROP
  • används bara med AFTER
  • kopplas till databaser eller servrar
  • inga specialtabeller
Bygga och optimera triggers i SQL Server

AFTER och FOR

CREATE TRIGGER DatabaseChangeLog
FOR CREATE_TABLE
[...]
Bygga och optimera triggers i SQL Server

AFTER och FOR

CREATE TRIGGER TrackDatabaseTables
FOR CREATE_TABLE
[...]

AFTER = FOR

Bygga och optimera triggers i SQL Server

Förutsättningar för DDL-triggers

  • Målobjekt (server eller databas)
  • Beskrivning av triggern
  • Triggerns aktiveringshändelser (DDL)
  • Triggerns namn
  • DATABASE
  • Loggtabell med definitionsändringar
  • CREATE_TABLE,ALTER_TABLE,DROP_TABLE
  • TrackTableChanges
Bygga och optimera triggers i SQL Server

Definition av DDL-trigger

CREATE TRIGGER TrackTableChanges

ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS INSERT INTO TablesChangeLog (EventData, ChangedBy) VALUES (EVENTDATA(), USER);
Bygga och optimera triggers i SQL Server

Förhindra aktiveringshändelser för DML-triggers

CREATE TRIGGER PreventTableDeletion
ON DATABASE
FOR DROP_TABLE

AS RAISERROR ('You are not allowed to remove tables from this database.', 16, 1); ROLLBACK;
Bygga och optimera triggers i SQL Server

Nu kör vi en övning!

Bygga och optimera triggers i SQL Server

Preparing Video For Download...