DISABLE TRIGGER (Transact-SQL)

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

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Синтаксис

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

Аргументы

  • schema_name
    Имя схемы, к которой принадлежит триггер. schema_name не может указываться для триггеров DDL или триггеров входа.

  • trigger_name
    Имя триггера, который нужно отключить.

  • ALL
    Означает, что все триггеры в области действия предложения ON будут отключены.

    Предупреждение

    SQL Server создает триггеры в базах данных, опубликованных для репликации слиянием.Если в опубликованных базах данных указано значение ALL, то эти триггеры отключаются, что прерывает репликацию.Перед тем как задавать значение ALL, убедитесь, что текущая база данных не опубликована для репликации слиянием.

  • object_name
    Имя таблицы или представления, для выполнения которых создан триггер DML с именем trigger_name.

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

  • ALL SERVER

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

    Для триггера DDL показывает, что аргумент trigger_name был создан или изменен для выполнения в области сервера. Параметр ALL SERVER также применяется к триггерам входа.

    Примечание

    Этот параметр недоступен в автономной базе данных.

Замечания

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

Изменение триггера с помощью инструкции ALTER TRIGGER приводит к включению триггера.

Разрешения

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

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

Примеры

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

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

USE AdventureWorks2012;
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 AdventureWorks2012;
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)