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


ENABLE TRIGGER (Transact-SQL)

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

Включает триггер DML, DDL или logon.

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

Синтаксис

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

Аргументы

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

trigger_name
Имя триггера.

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

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

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

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

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

Примечание.

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

Замечания

При включении триггера он не создается повторно. Отключенный триггер не может быть запущен, но продолжает существование в виде объекта в текущей базе данных. Включение триггера приводит к его запуску при выполнении любых инструкций Transact-SQL, на которые он изначально был запрограммирован. Триггеры отключаются с помощью инструкции DISABLE TRIGGER. Триггеры DML, определенные в таблицах, также можно отключать или включать с помощью ALTER TABLE.

Разрешения

Чтобы включить триггер DML, пользователю необходимо, как минимум, обладать разрешением ALTER для таблицы или представления, на которые был создан триггер.

Для включения триггера DDL в области сервера (ON ALL SERVER) или триггера входа пользователю необходимо обладать разрешением CONTROL SERVER на этот сервер. Чтобы включить триггер DDL в области базы данных (ON DATABASE), пользователю необходимо, как минимум, иметь разрешение ALTER ANY DATABASE DDL TRIGGER для текущей базы данных.

Примеры

А. Включение триггера DML для таблицы

В данном примере отключается триггер uAddress, созданный для таблицы Address в базе данных AdventureWorks, а затем он включается.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  
ENABLE 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  
ENABLE TRIGGER safety ON DATABASE;  
GO  

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

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

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

ENABLE Trigger ALL ON ALL SERVER;  
GO  

См. также

DISABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)