-
Notifications
You must be signed in to change notification settings - Fork 2
27. Триггеры DDL T SQL
Триггеры DDL — это особый вид триггеров, которые срабатывают при выполнении инструкций языка описания данных DDL. Они могут применяться при выполнении административных задач (например, для аудита и регулирования операций в базе данных).
Триггеры DDL, как и обычные триггеры, вызывают срабатывание хранимых процедур в ответ на событие. Однако в отличие от триггеров DML они не срабатывают в ответ на инструкции UPDATE, INSERT или DELETE
для таблицы или представления. Вместо этого они срабатывают в ответ на разнообразные события языка определения данных (DDL). Эти события в основном соответствуют инструкциям языка Transact-SQL, начинающимся ключевыми словами CREATE, ALTER
или DROP
. Системные хранимые процедуры, выполняющие операции, подобные операциям DDL, также могут запускать триггеры DDL.
Триггеры DDL срабатывают только после выполнения соответствующих инструкций DDL.
Пример:
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or
alter tables!'
ROLLBACK ;
При разработке триггеров DDL учитывайте их следующие отличия от триггеров DDL.
- Триггеры DDL выполняются только после завершения инструкции Transact-SQL. Триггеры DDL нельзя использовать в качестве триггеров
INSTEAD OF
. - Триггеры DDL не создают таблицы inserted и deleted. Сведения о событии, приведшем к срабатыванию триггера DDL, и последующих изменениях, выполненных триггером, можно получить при помощи функции
EVENTDATA
.