DISABLE TRIGGER (Transact-SQL)

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

Desabilita um gatilho.

Convenções de sintaxe de Transact-SQL

Sintaxe

DISABLE 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 desabilitado.

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

Cuidado

O SQL Server cria gatilhos em bancos de dados que são publicados para replicação de mesclagem. Ao especificar ALL em bancos de dados publicados, esses gatilhos são desabilitados, interrompendo a replicação. Verifique se o banco de dados atual não foi publicado para replicação de mesclagem antes de especificar ALL.

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

Os gatilhos são habilitados por padrão ao serem criados. Ao desabilitar um gatilho, você não o descarta. O gatilho ainda existe como um objeto no banco de dados atual. Porém, o gatilho não é acionado quando qualquer instrução Transact-SQL em que ele tenha sido programado é executada. Os gatilhos podem ser reabilitados usando ENABLE TRIGGER. Os gatilhos DML definidos em tabelas também podem ser desabilitados ou habilitados usando ALTER TABLE.

Alterar o gatilho usando a instrução ALTER TRIGGER habilita o gatilho.

Permissões

Para desabilitar 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 desabilitar um gatilho DDL definido com escopo de servidor (ON ALL SERVER) ou um gatilho de logon, um usuário deve ter a permissão CONTROL SERVER no servidor. Para desabilitar um gatilho DDL definido com escopo de 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

Os exemplos de código do Transact-SQL deste artigo usa o banco de dados de exemplo AdventureWorks2022 ou AdventureWorksDW2022, que pode ser baixado da home page Microsoft SQL Server Samples and Community Projects.

R. Desabilitando um gatilho DML em uma tabela

O exemplo a seguir desabilita o gatilho uAddress que foi criado na tabela Person.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B. Desabilitando um gatilho DDL

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

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  

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

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

DISABLE Trigger ALL ON ALL SERVER;  
GO  

Consulte Também

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