DROP TRIGGER (Transact-SQL)

Remove um ou mais gatilhos DML ou DDL do banco de dados atual.

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

Sintaxe

Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)
DROP TRIGGER [schema_name.]trigger_name [ ,...n ] [ ; ]

Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)
DROP TRIGGER trigger_name [ ,...n ] 
ON { DATABASE | ALL SERVER } 
[ ; ]

Trigger on a LOGON event (Logon Trigger)
DROP TRIGGER trigger_name [ ,...n ] 
ON ALL SERVER 

Argumentos

  • schema_name
    É o nome do esquema ao qual o gatilho DML pertence. O escopo dos gatilhos DML é o esquema da tabela ou exibição na qual eles foram criados. schema_name não pode ser especificado para gatilhos DDL ou de logon.

  • trigger_name
    É o nome do gatilho a ser removido. Para consultar uma lista dos gatilhos atualmente criados, use sys.server_assembly_modules ou sys.server_triggers.

  • DATABASE
    Indica que o escopo do gatilho DDL é aplicado ao banco de dados atual. DATABASE deverá ser especificado se também foi especificado quando o gatilho foi criado ou modificado.

  • ALL SERVER
    Indica que o escopo do gatilho DDL é aplicado ao servidor atual. ALL SERVER deverá ser especificado se também foi especificado quando o gatilho foi criado ou modificado. ALL SERVER também é aplicado a gatilhos de logon.

Comentários

Você pode remover um gatilho DML descartando-o ou descartando a tabela do gatilho. Quando uma tabela é descartada, todos os gatilhos associados também são descartados.

Quando um gatilho é descartado, as informações sobre o gatilho são removidas das exibições de catálogo sys.objects, sys.triggers e sys.sql_modules.

Somente será possível descartar vários gatilhos DDL por instrução DROP TRIGGER caso todos os gatilhos foram criados usando cláusulas ON idênticas.

Para renomear um gatilho, use DROP TRIGGER e CREATE TRIGGER. Para alterar a definição de um gatilho, use ALTER TRIGGER.

Para obter mais informações sobre como determinar as dependências de um gatilho específico, consulte sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL) e sys.dm_sql_referencing_entities (Transact-SQL).

Para obter mais informações sobre como exibir o texto do gatilho, consulte sp_helptext (Transact-SQL) e sys.sql_modules (Transact-SQL).

Para obter mais informações sobre como exibir uma lista dos gatilhos existentes, consulte sys.triggers (Transact-SQL) e sys.server_triggers (Transact-SQL).

Permissões

O descarte de um gatilho DML requer permissão ALTER na tabela ou exibição na qual o gatilho está definido.

O descarte de um gatilho DDL definido com escopo no servidor (ON ALL SERVER) ou de um gatilho de logon requer permissão CONTROL SERVER no servidor. O descarte de um gatilho DDL definido com escopo no banco de dados (ON DATABASE) requer permissão ALTER ANY DATABASE DDL TRIGGER no banco de dados atual.

Exemplos

A. Descartando um gatilho DML

O exemplo a seguir descarta o gatilho employee_insupd.

USE AdventureWorks2008R2;
GO
IF OBJECT_ID ('employee_insupd', 'TR') IS NOT NULL
   DROP TRIGGER employee_insupd;
GO

B. Descartando um gatilho DDL

O exemplo a seguir descarta o gatilho DDL safety.

Observação importanteImportante

Como os gatilhos DDL não têm seu escopo definido para o esquema e, portanto, não aparecem na exibição de catálogo sys.objects, a função OBJECT_ID não pode ser usada para consultar se eles existem no banco de dados. Os objetos que não tenham seu escopo definido para o esquema devem ser consultados usando a exibição de catálogo apropriada. Para gatilhos DDL, use sys.triggers.

USE AdventureWorks2008R2;
GO
IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety
ON DATABASE;
GO