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