DISABLE TRIGGER (Transact-SQL)

Изменения: 12 декабря 2006 г.

Отключает триггер DML, DDL или входа.

Значок ссылки на разделСинтаксические обозначения в Transact-SQL

Синтаксис

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]

Аргументы

  • schema_name
    Имя схемы, которой принадлежит триггер. Для триггеров DDL или триггеров входа аргумент schema_name не задается.
  • trigger_name
    Имя триггера, который нужно отключить.
  • ALL
    Означает, что все триггеры в области действия предложения ON будут отключены.

    ms189748.Caution(ru-ru,SQL.90).gifВнимание!
    SQL Server создает триггеры в базах данных, опубликованных для репликации слиянием. Если в опубликованных базах данных указано значение ALL, то эти триггеры отключаются, что прерывает репликацию. Перед тем как задавать значение ALL, убедитесь, что текущая база данных не опубликована для репликации слиянием.
  • object_name
    Имя таблицы или представления, для выполнения которых создан триггер DML с именем trigger_name.
  • DATABASE
    Для триггера DDL показывает, что аргумент trigger_name был создан или изменен для выполнения в области базы данных.
  • ALL SERVER
    Для триггера DDL или триггера входа показывает, что аргумент trigger_name был создан или изменен для выполнения в области сервера.

Замечания

Созданные триггеры включены по умолчанию. Отключение триггера не приводит к его удалению. Этот триггер продолжает существовать как объект текущей базы данных. Однако триггер не запускается, когда инструкции Transact-SQL, для которых он запрограммирован, выполняются. Повторно включить триггеры можно с помощью инструкции ENABLE TRIGGER. Кроме того, триггеры DML, определенные в таблицах, можно отключать или включать инструкцией ALTER TABLE.

Разрешения

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

Для отключения триггера DDL или триггера входа в области сервера (ON ALL SERVER) пользователь должен обладать разрешением CONTROL SERVER на этот сервер. Для отключения триггера DDL в области базы данных (ON DATABASE) пользователь должен обладать как минимум разрешением ALTER ANY DATABASE DDL TRIGGER в текущей базе данных.

Примеры

А. Отключение триггера DML в таблице

В следующем примере показано отключение триггера uAddress, созданного для таблицы Address.

USE AdventureWorks;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO

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

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

IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
CREATE TRIGGER safety 
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE 
AS 
   PRINT 'You must disable Trigger "safety" to drop or alter tables!' 
   ROLLBACK;
GO
DISABLE TRIGGER safety ON DATABASE;
GO

В. Отключение всех триггеров, определенных в одной области

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

USE AdventureWorks;
GO
DISABLE Trigger ALL ON ALL SERVER;
GO

См. также

Справочник

ENABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)

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

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

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

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

12 декабря 2006 г.

Добавления
  • Добавлены сведения по всему разделу о триггерах входа, появившихся в SQL Server 2005 с пакетом обновления 2 (SP2).