Реализация триггеров DDL

В этом разделе приведены сведения, необходимые для создания, изменения, выключения и удаления триггеров DDL.

Создание триггеров DDL

Триггеры DDL создаются при помощи инструкции Transact-SQL CREATE TRIGGER для триггеров DDL.

Создание триггера DDL

Важное примечаниеВажно!

Возможность возвращать результирующие наборы из триггеров будет удалена в следующей версии SQL Server. Триггеры, возвращающие результирующие наборы, могут привести к непредвиденному поведению приложений, не предназначенных для работы с ними. Не используйте в разрабатываемых приложениях триггеры, возвращающие результирующие наборы, и запланируйте изменение приложений, которые используют их в настоящее время. Чтобы триггеры не возвращали результирующие наборы в SQL Server, задайте значение параметра disallow results from triggers, равное 1. В будущих версиях SQL Server для этого параметра по умолчанию будет задаваться значение 1.

Изменение триггеров DDL

Если необходимо изменить определение триггера DDL, можно удалить и вновь создать триггер или переопределить существующий триггер одной инструкцией.

Если изменилось имя объекта, на который ссылается триггер DDL, текст триггера необходимо соответствующим образом изменить. Поэтому перед переименованием объекта вначале выведите зависимости объекта, чтобы определить, не повлияет ли предлагаемое изменение на работу каких-либо триггеров.

Может быть также зашифровано определение триггера.

Изменение триггера

Просмотр зависимостей триггера

Отключение и удаление триггеров DDL

Если триггер DDL больше не нужен, он может быть отключен или удален.

Отключение триггера DDL не приводит к его удалению, Триггер все еще существует как объект в текущей базе данных. Однако этот триггер не будет срабатывать при выполнении инструкций Transact-SQL, на которые он был запрограммирован. Отключенные триггеры DDL можно повторно включать. После включения триггер DDL вновь начинает срабатывать так, как это было указано при его создании. При создании триггеров DDL они включаются по умолчанию.

При удалении триггера DDL он удаляется из текущей базы данных. Удаление триггера DDL никоим образом не влияет на объекты или данные, на которые распространялась область действия триггера.

Отключение триггера DDL

Включение триггера DDL

Удаление триггера DDL