Compartilhar via


DROP TRIGGER (Transact-SQL)

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

Aplica-se a: SQL Server (SQL Server 2008 até a versão atual), Banco de dados SQL do Windows Azure (versão inicial até a versão atual).

Ícone de vínculo de tópico Convenções da sintaxe Transact-SQL

Sintaxe

-- SQL Server Syntax 

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 

-- Windows Azure SQL Database Syntax

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 } 
[ ; ] 

Argumentos

  • schema_name
    É o nome do esquema ao qual o gatilho DML pertence. Os gatilhos DML são definidos no escopo do esquema da tabela ou na exibição na qual são 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

    Aplica-se a: SQL Server 2008 a SQL Server 2014.

    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.

    Dica

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

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 remove o gatilho employee_insupd do banco de dados AdventureWorks2012.

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

B.Descartando um gatilho DDL

O exemplo a seguir descarta o gatilho DDL safety.

Importante

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.

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

Consulte também

Referência

ALTER TRIGGER (Transact-SQL)

CREATE TRIGGER (Transact-SQL)

ENABLE TRIGGER (Transact-SQL)

DISABLE TRIGGER (Transact-SQL)

EVENTDATA (Transact-SQL)

sp_help (Transact-SQL)

sp_helptrigger (Transact-SQL)

sys.triggers (Transact-SQL)

sys.trigger_events (Transact-SQL)

sys.sql_modules (Transact-SQL)

sys.assembly_modules (Transact-SQL)

sys.server_triggers (Transact-SQL)

sys.server_trigger_events (Transact-SQL)

sys.server_sql_modules (Transact-SQL)

sys.server_assembly_modules (Transact-SQL)

Conceitos

Obter informações sobre gatilhos DML