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)