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


DISABLE TRIGGER (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

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

Аргументы

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

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

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

Внимание

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

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

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

ALL SERVER
Применимо: SQL Server 2008 (10.0.x) и более поздних версий.

Показывает, что триггер 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 в текущей базе данных.

Примеры

Примеры кода Transact-SQL в этой статье используют AdventureWorks2022 базу данных или AdventureWorksDW2022 пример базы данных, которую можно скачать с домашней страницы примеров и проектов сообщества Microsoft SQL Server.

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

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

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

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

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

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  

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

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

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)