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