DISABLE TRIGGER (Transact-SQL)
Изменения: 12 декабря 2006 г.
Отключает триггер DML, DDL или входа.
Синтаксические обозначения в Transact-SQL
Синтаксис
DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }
ON { object_name | DATABASE | ALL SERVER } [ ; ]
Аргументы
- schema_name
Имя схемы, которой принадлежит триггер. Для триггеров DDL или триггеров входа аргумент schema_name не задается.
- trigger_name
Имя триггера, который нужно отключить.
ALL
Означает, что все триггеры в области действия предложения ON будут отключены.Внимание! SQL Server создает триггеры в базах данных, опубликованных для репликации слиянием. Если в опубликованных базах данных указано значение ALL, то эти триггеры отключаются, что прерывает репликацию. Перед тем как задавать значение ALL, убедитесь, что текущая база данных не опубликована для репликации слиянием.
- object_name
Имя таблицы или представления, для выполнения которых создан триггер DML с именем trigger_name.
- DATABASE
Для триггера DDL показывает, что аргумент trigger_name был создан или изменен для выполнения в области базы данных.
- ALL SERVER
Для триггера DDL или триггера входа показывает, что аргумент trigger_name был создан или изменен для выполнения в области сервера.
Замечания
Созданные триггеры включены по умолчанию. Отключение триггера не приводит к его удалению. Этот триггер продолжает существовать как объект текущей базы данных. Однако триггер не запускается, когда инструкции 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 AdventureWorks;
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 AdventureWorks;
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)
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
12 декабря 2006 г. |
|