Partilhar via


ENABLE TRIGGER (Transact-SQL)

Habilita um gatilho DML, DDL ou de logon.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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

Argumentos

  • schema_name
    É o nome do esquema ao qual o gatilho pertence. schema_name não pode ser especificado para gatilhos DDL ou de logon.

  • trigger_name
    É o nome do gatilho a ser habilitado.

  • ALL
    Indica que todos os gatilhos definidos no escopo da cláusula ON estão habilitados.

  • object_name
    É o nome da tabela ou exibição na qual o gatilho DML trigger_name foi criado para executar.

  • DATABASE
    Para um gatilho DDL, indica que trigger_name foi criado ou modificado para executar com escopo no banco de dados.

  • ALL SERVER
    Para um gatilho DDL, indica que trigger_name foi criado ou modificado para executar com escopo no servidor. ALL SERVER também é aplicado a gatilhos de logon.

Comentários

A habilitação de um gatilho não recria o mesmo. Um gatilho desabilitado ainda existe como um objeto no banco de dados atual, mas não é acionado. A habilitação de um gatilho faz com que ele seja acionado quando forem executadas quaisquer instruções Transact-SQL nas quais ele foi originalmente programado. Os gatilhos são desabilitados usando DISABLE TRIGGER. Os disparadores DML definidos em tabelas também podem ser desabilitados ou habilitados usando ALTER TABLE.

Permissões

Para habilitar um gatilho DML, no mínimo, um usuário deve ter a permissão ALTER na tabela ou exibição na qual o gatilho foi criado.

Para habilitar um gatilho DDL definido com escopo no servidor (ON ALL SERVER) ou um gatilho de logon, um usuário deve ter permissão CONTROL SERVER no servidor. Para habilitar um gatilho DDL definido com escopo no banco de dados (ON DATABASE), no mínimo, um usuário deve ter a permissão ALTER ANY DATABASE DDL TRIGGER no banco de dados atual.

Exemplos

A. Habilitando um gatilho DML em uma tabela

O exemplo a seguir desabilita o gatilho uAddress que foi criado na tabela Addresse depois habilita o mesmo.

USE AdventureWorks2008R2;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
ENABLE Trigger Person.uAddress ON Person.Address;
GO

B. Habilitando um gatilho DDL

O exemplo a seguir cria um gatilho DDL safety com escopo definido no banco de dados e depois desabilita o mesmo.

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

C. Habilitando todos os gatilhos que foram definidos com o mesmo escopo

O exemplo a seguir habilita todos os gatilhos DDL que foram criados no escopo do servidor.

USE AdventureWorks2008R2;
GO
ENABLE Trigger ALL ON ALL SERVER;
GO