DDL triggery

Tvorba a optimalizace triggerů v SQL Serveru

Florin Angelescu

Instructor

Definice a vlastnosti

DML triggery

  • události spojené s příkazy DML INSERT, UPDATE, DELETE
  • používají se s AFTER nebo INSTEAD OF
  • připojeny k tabulkám nebo pohledům
  • speciální tabulky inserted a deleted

DDL triggery

  • události spojené s příkazy DDL CREATE, ALTER, DROP
  • používají se pouze s AFTER
  • připojeny k databázím nebo serverům
  • žádné speciální tabulky
Tvorba a optimalizace triggerů v SQL Serveru

AFTER a FOR

CREATE TRIGGER DatabaseChangeLog
FOR CREATE_TABLE
[...]
Tvorba a optimalizace triggerů v SQL Serveru

AFTER a FOR

CREATE TRIGGER TrackDatabaseTables
FOR CREATE_TABLE
[...]

AFTER = FOR

Tvorba a optimalizace triggerů v SQL Serveru

Předpoklady DDL triggeru

  • Cílový objekt (server nebo databáze)
  • Popis triggeru
  • Spouštěcí události triggeru (DDL)
  • Název triggeru
  • DATABASE
  • Logovací tabulka se změnami definic
  • CREATE_TABLE,ALTER_TABLE,DROP_TABLE
  • TrackTableChanges
Tvorba a optimalizace triggerů v SQL Serveru

Definice DDL triggeru

CREATE TRIGGER TrackTableChanges

ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS INSERT INTO TablesChangeLog (EventData, ChangedBy) VALUES (EVENTDATA(), USER);
Tvorba a optimalizace triggerů v SQL Serveru

Zamezení spouštěcích událostí u DML triggerů

CREATE TRIGGER PreventTableDeletion
ON DATABASE
FOR DROP_TABLE

AS RAISERROR ('You are not allowed to remove tables from this database.', 16, 1); ROLLBACK;
Tvorba a optimalizace triggerů v SQL Serveru

Pojďme cvičit!

Tvorba a optimalizace triggerů v SQL Serveru

Preparing Video For Download...