DDL-триггеры

Создание и оптимизация триггеров в SQL Server

Florin Angelescu

Instructor

Определение и свойства

DML-триггеры

  • события, связанные с DML-командами INSERT, UPDATE, DELETE
  • используются с AFTER или INSTEAD OF
  • привязываются к таблицам или представлениям
  • специальные таблицы inserted и deleted

DDL-триггеры

  • события, связанные с DDL-командами CREATE, ALTER, DROP
  • используются только с AFTER
  • привязываются к базам данных или серверам
  • специальных таблиц нет
Создание и оптимизация триггеров в SQL Server

AFTER и FOR

CREATE TRIGGER DatabaseChangeLog
FOR CREATE_TABLE
[...]
Создание и оптимизация триггеров в SQL Server

AFTER и FOR

CREATE TRIGGER TrackDatabaseTables
FOR CREATE_TABLE
[...]

AFTER = FOR

Создание и оптимизация триггеров в SQL Server

Предварительные условия для DDL-триггера

  • Целевой объект (сервер или база данных)
  • Описание триггера
  • События срабатывания триггера (DDL)
  • Имя триггера
  • DATABASE
  • Таблица журнала с изменениями определений
  • CREATE_TABLE,ALTER_TABLE,DROP_TABLE
  • TrackTableChanges
Создание и оптимизация триггеров в SQL Server

Определение DDL-триггера

CREATE TRIGGER TrackTableChanges

ON DATABASE
FOR CREATE_TABLE, ALTER_TABLE, DROP_TABLE
AS INSERT INTO TablesChangeLog (EventData, ChangedBy) VALUES (EVENTDATA(), USER);
Создание и оптимизация триггеров в SQL Server

Предотвращение событий срабатывания для DML-триггеров

CREATE TRIGGER PreventTableDeletion
ON DATABASE
FOR DROP_TABLE

AS RAISERROR ('You are not allowed to remove tables from this database.', 16, 1); ROLLBACK;
Создание и оптимизация триггеров в SQL Server

Давайте потренируемся!

Создание и оптимизация триггеров в SQL Server

Preparing Video For Download...