DROP TRIGGER (Transact-SQL)

Aplica-se a:SQL ServerBanco de Dados SQL do AzureInstância Gerenciada de SQL do Azure

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

Convenções de sintaxe de Transact-SQL

Sintaxe

-- Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger)  
  
DROP TRIGGER [ IF EXISTS ] [schema_name.]trigger_name [ ,...n ] [ ; ]  
  
-- Trigger on a CREATE, ALTER, DROP, GRANT, DENY, REVOKE or UPDATE statement (DDL Trigger)  
  
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   
ON { DATABASE | ALL SERVER }   
[ ; ]  
  
-- Trigger on a LOGON event (Logon Trigger)  
  
DROP TRIGGER [ IF EXISTS ] trigger_name [ ,...n ]   
ON ALL SERVER  

Observação

Para exibir a sintaxe do Transact-SQL para o SQL Server 2014 (12.x) e versões anteriores, confira a Documentação das versões anteriores.

Argumentos

IF EXISTS
Aplica-se a: SQL Server (SQL Server 2016 (13.x) até a versão atual, Banco de Dados SQL).

Remove condicionalmente o gatilho somente se ele já existe.

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 (10.0.x) e posterior.

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.

Observação

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, confira 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, confira sp_helptext (Transact-SQL) e sys.sql_modules (Transact-SQL).

Para obter mais informações sobre como exibir uma lista dos gatilhos existentes, confira 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 no banco de dados AdventureWorks2022. (Começando pelo SQL Server 2016 (13.x), é possível usar a sintaxe DROP TRIGGER IF EXISTS.)

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

Uma vez que 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.

DROP TRIGGER safety  
ON DATABASE;  

Consulte Também

ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
Obter informações sobre gatilhos DML
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)