Поделиться через


Основные сведения о триггерах DDL

Изменения: 14 апреля 2006 г.

Триггеры DDL, как и обычные триггеры, вызывают срабатывание хранимых процедур в ответ на событие. Однако в отличие от триггеров DML, они не срабатывают в ответ на инструкции UPDATE, INSERT или DELETE для таблицы или представления. Вместо этого они срабатывают в ответ на разнообразные события языка определения данных (DDL). Эти события в основном соответствуют инструкциям языка Transact-SQL, начинающимся ключевыми словами CREATE, ALTER или DROP. Системные хранимые процедуры, выполняющие операции, подобные операциям DDL, также могут запускать триггеры DDL.

ms175941.note(ru-ru,SQL.90).gifВажно!
Протестируйте триггеры DDL, чтобы определить, как они отвечают на запущенные системные хранимые процедуры. Например, как инструкция CREATE TYPE, так и хранимая процедура sp_addtype вызывают срабатывание триггера DDL, созданного на событии CREATE_TYPE. Однако хранимая процедура sp_rename не запускает никаких триггеров DDL.

Триггеры 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, имеющегося в образце базы данных AdventureWorks, в обозревателе объектов в среде SQL Server Management Studio откройте папку «Триггеры базы данных», расположенную в папке «Возможность программирования» образца базы данных AdventureWorks. Щелкните правой кнопкой мыши элемент ddlDatabaseTriggerLog и выберите команду Создать сценарий для триггера базы данных. По умолчанию, триггер DDL ddlDatabaseTriggerLog отключен.

См. также

Основные понятия

Основные различия между триггерами DDL и триггерами DML
Реализация триггеров DDL

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

14 апреля 2006 г.

Добавления
  • Добавлено важное замечание о том, что рекомендуется тестировать реакцию триггеров DDL на выполняемые системные хранимые процедуры.