Основные сведения о триггерах DDL
Триггеры DDL, как и обычные триггеры, вызывают срабатывание хранимых процедур в ответ на событие. Однако в отличие от триггеров DML они не срабатывают в ответ на инструкции UPDATE, INSERT или DELETE для таблицы или представления. Вместо этого они срабатывают в ответ на разнообразные события языка определения данных (DDL). Эти события в основном соответствуют инструкциям языка Transact-SQL, начинающимся ключевыми словами CREATE, ALTER или DROP. Системные хранимые процедуры, выполняющие операции, подобные операциям DDL, также могут запускать триггеры DDL.
Важно! |
---|
Протестируйте триггеры DDL, чтобы определить, как они отвечают на запущенные системные хранимые процедуры. Например, как инструкция CREATE TYPE, так и хранимая процедура sp_addtype вызывают срабатывание триггера DDL, созданного на событии CREATE_TYPE. . |
Триггеры DDL могут быть использованы в административных задачах, таких как аудит и регулирование операций базы данных.
Используйте триггеры DDL, если хотите сделать следующее.
Предотвратить внесение определенных изменений в схему базы данных.
Выполнить в базе данных некоторые действия в ответ на изменения в схеме базы данных.
Записывать изменения или события схемы базы данных.
Триггеры DDL срабатывают только после выполнения соответствующих инструкций DDL. Триггеры DDL нельзя использовать в качестве триггеров INSTEAD OF.
В следующем примере показано, как триггер DDL может быть использован для предотвращения изменения или удаления любой таблицы базы данных.
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK ;
Триггеры DLL могут срабатывать в ответ на событие языка Transact-SQL, обрабатываемое в текущей базе данных или на текущем сервере. Область действия триггера зависит от события. Дополнительные сведения об области действия триггеров DDL см. в разделе Проектирование триггеров DDL.
Для получения примера триггера DDL, имеющегося в образце базы данных База данных AdventureWorks2008R2, в обозревателе объектов в среде Среда SQL Server Management Studio откройте папку «Триггеры базы данных», расположенную в папке «Возможность программирования» образца базы данных База данных AdventureWorks2008R2. Щелкните правой кнопкой мыши элемент ddlDatabaseTriggerLog и выберите команду Создать сценарий для триггера базы данных. По умолчанию триггер DDL ddlDatabaseTriggerLog отключен.
См. также