Compartilhar via


ENABLE TRIGGER (Transact-SQL)

Aplica-se a: SQL Server Banco de Dados SQL do Azure Instância Gerenciada de SQL do Azure

Habilita um disparador DML, DDL ou de logon.

Convenções de sintaxe de 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 disparador a ser habilitado.

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

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

DATABASE
Para um gatilho DDL, indica que trigger_name foi criado ou modificado para ser executado com o escopo do banco de dados.

ALL SERVER
Aplica-se a: SQL Server 2008 (10.0.x) e posterior.

Para um gatilho DDL, indica que trigger_name foi criado ou modificado para ser executado com o escopo do servidor. ALL SERVER também é aplicado a gatilhos de logon.

Observação

Essa opção não está disponível em um banco de dados independente.

Comentários

A habilitação de um disparador não recria o mesmo. Um disparador desabilitado ainda existe como um objeto no banco de dados atual, mas não é acionado. A habilitação de um disparador 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 gatilhos DML definidos em tabelas também podem ser desabilitados ou habilitados usando ALTER TABLE.

Permissões

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

Para habilitar um disparador DDL definido com escopo no servidor (ON ALL SERVER) ou um disparador de logon, um usuário precisa ter permissão CONTROL SERVER no servidor. Para habilitar um disparador DDL definido com escopo no banco de dados (ON DATABASE), no mínimo, um usuário precisa 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 Address no banco de dados AdventureWorks e, em seguida, habilita-o.

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 o desabilita e habilita.

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 disparadores DDL que foram criados no escopo do servidor.

Aplica-se a: SQL Server 2008 (10.0.x) e posterior.

ENABLE Trigger ALL ON ALL SERVER;  
GO  

Consulte Também

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