ENABLE TRIGGER (Transact-SQL)

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

Применимо для следующих объектов: SQL Server (SQL Server 2008 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Значок ссылки на раздел Cинтаксические обозначения в Transact-SQL

Синтаксис

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

Аргументы

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

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

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

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

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

  • ALL SERVER

    Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

    Для триггера 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, а затем он включается.

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

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

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

Применимо для следующих объектов: С SQL Server 2008 по SQL Server 2014 включительно.

USE AdventureWorks2012;
GO
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)