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). |
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
DISABLE TRIGGER (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)