- 05/10/2017
- 2 minutos para ler
-
- W
- c
- r
- i
- M
-
+7
Candidata-se a: ServidorSQL (todas as versões suportadas) Banco de dados SQL de Azure
Desactiva um trigger.
Convenções de sintaxe do Transact-SQL
Sintaxe
DISABLE TRIGGER { trigger_name | ALL } ON { object_name | DATABASE | ALL SERVER }
Nota
Para ver a sintaxe do Transact-SQL para o SQL Server 2014 e versões anteriores, veja a documentação das versões anteriores.
Argumentos
Nome_do_schema
É o nome do esquema ao qual o gatilho pertence. schema_name não pode ser especificado para DDL ou triggers de logon.
trigger_name
É o nome do trigger a ser desabilitado.
ALL
Indica que todos triggers definidos no escopo da cláusula ON estão desabilitados.
Cautela
ServidorSQL cria triggers em bancos de dados que são publicados para replicação de merge. Especificar TODOS em bancos de dados publicados desabilita esses triggers, o que perturba a replicação. Verifique se o banco de dados atual não está publicado para replicação de merge antes de especificar ALL.
object_name
É o nome da tabela ou visualização na qual o trigger_name DML foi criado para executar.
DATABASE
Para um trigger DDL, indica que o trigger_name foi criado ou modificado para executar com o escopo do banco de dados.
ALL SERVER
Applies to: SQL Server 2008 e posteriores.
Para um trigger DDL, indica que o trigger_name foi criado ou modificado para ser executado com o escopo do servidor. ALL SERVER também se aplica a triggers de logon.
Nota
Esta opção não está disponível em uma base de dados contida.
Remarks
Triggers são ativados por padrão quando são criados. Desabilitar um gatilho não o desabilita. O trigger ainda existe como um objeto no banco de dados atual. No entanto, o trigger não dispara quando qualquer instrução Transact-SQL na qual foi programado é executada. Os gatilhos podem ser habilitados novamente usando o ENABLE TRIGGER. Os gatilhos DML definidos nas 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 trigger DML, no mínimo, o usuário deve ter a permissão de ALTER na tabela ou vista na qual o trigger foi criado.
Para desabilitar um trigger DDL com escopo do servidor (ON ALL SERVER) ou um trigger de logon, o usuário deve ter permissão de CONTROL SERVER no servidor. Para desabilitar um trigger DDL com escopo da base de dados (ON DATABASE), no mínimo, o usuário deve ter ALTERADA permissão de TRIGGER DDL da base de dados atual.
Exemplos
Os exemplos a seguir estão descritos na base de dados AdventureWorks2012.
A. Desabilitando um gatilho DML em uma tabela
O seguinte exemplo desabilita o gatilho uAddress
que foi criado na tabela Person
.
DISABLE TRIGGER Person.uAddress ON Person.Address; GO
B. Desabilitando um trigger DDL
O exemplo a seguir cria um trigger DDL safety
com escopo de banco de dados, e então o desabilita.
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
Veja Também
TRIGGERENÁVEL (Transact-SQL)
TRIGGERALTER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
Sys.triggers (Transact-SQL)