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


DISABLE TRIGGER (Transact-SQL)

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

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

Синтаксис

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
    Для триггера DDL показывает, что аргумент trigger_name был создан или изменен для выполнения в области сервера. Параметр ALL SERVER также применяется к триггерам входа.

    ПримечаниеПримечание

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

Замечания

Триггеры включаются по умолчанию при создании. Отключение триггера не сбрасывает его. Этот триггер продолжает существовать как объект текущей базы данных. Однако триггер не запускается, когда инструкции 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 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)