DROP TRIGGER (Transact-SQL)DROP TRIGGER (Transact-SQL)

Se aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL DatabaseSe aplica a:Applies to: síSQL ServerSQL Server (todas las versiones admitidas) yesSQL ServerSQL Server (all supported versions) SíAzure SQL DatabaseAzure SQL DatabaseYesAzure SQL DatabaseAzure SQL Database

Quita uno o varios desencadenadores DML o DDL de la base de datos actual.Removes one or more DML or DDL triggers from the current database.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

-- 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  

Nota

Para ver la sintaxis de Transact-SQL para SQL Server 2014 y versiones anteriores, consulte Versiones anteriores de la documentación.To view Transact-SQL syntax for SQL Server 2014 and earlier, see Previous versions documentation.

ArgumentosArguments

IF EXISTSIF EXISTS
Se aplica a: SQL ServerSQL Server (desde SQL Server 2016 (13.x)SQL Server 2016 (13.x) hasta la versión actual, SQL DatabaseSQL Database).Applies to: SQL ServerSQL Server ( SQL Server 2016 (13.x)SQL Server 2016 (13.x) through current version, SQL DatabaseSQL Database).

Quita el desencadenador condicionalmente solo si ya existe.Conditionally drops the trigger only if it already exists.

schema_nameschema_name
Es el nombre del esquema al que pertenece un desencadenador DML.Is the name of the schema to which a DML trigger belongs. Los desencadenadores DML tienen como ámbito el esquema de la tabla o la vista donde se crean.DML triggers are scoped to the schema of the table or view on which they are created. schema_name no se puede especificar para los desencadenadores DDL o de inicio de sesión.schema_name cannot be specified for DDL or logon triggers.

trigger_nametrigger_name
Es el nombre del desencadenador que se va a quitar.Is the name of the trigger to remove. Para ver una lista de los desencadenadores creados actualmente, utilice sys.server_assembly_modules o sys.server_triggers.To see a list of currently created triggers, use sys.server_assembly_modules or sys.server_triggers.

DATABASEDATABASE
Indica que el ámbito del desencadenador DDL se aplica a la base de datos actual.Indicates the scope of the DDL trigger applies to the current database. Debe especificarse DATABASE si también se especificó al crear o modificar el desencadenador.DATABASE must be specified if it was also specified when the trigger was created or modified.

ALL SERVERALL SERVER
Válido para : SQL Server 2008SQL Server 2008 y versiones posteriores.Applies to: SQL Server 2008SQL Server 2008 and later.

Indica que el ámbito del desencadenador DDL se aplica al servidor actual.Indicates the scope of the DDL trigger applies to the current server. Debe especificarse ALL SERVER si también se especificó al crear o modificar el desencadenador.ALL SERVER must be specified if it was also specified when the trigger was created or modified. ALL SERVER también se aplica a los desencadenadores de inicio de sesión.ALL SERVER also applies to logon triggers.

Nota

Esta opción no está disponible en las bases de datos independientes.This option is not available in a contained database.

ObservacionesRemarks

Puede eliminar un desencadenador DML si quita éste o quita la tabla del desencadenador.You can remove a DML trigger by dropping it or by dropping the trigger table. Cuando se quita una tabla, también se quitan todos los desencadenadores asociados.When a table is dropped, all associated triggers are also dropped.

Cuando se quita un desencadenador, se quita la información acerca del desencadenador de las vistas de catálogos sys.objects, sys.triggers y sys.sql_modules.When a trigger is dropped, information about the trigger is removed from the sys.objects, sys.triggers and sys.sql_modules catalog views.

Se pueden quitar varios desencadenadores DDL por instrucción DROP TRIGGER solo si todos los desencadenadores se crearon utilizando las mismas cláusulas ON.Multiple DDL triggers can be dropped per DROP TRIGGER statement only if all triggers were created using identical ON clauses.

Para cambiar el nombre de un desencadenador, utilice DROP TRIGGER y CREATE TRIGGER.To rename a trigger, use DROP TRIGGER and CREATE TRIGGER. Para cambiar la definición de un desencadenador, utilice ALTER TRIGGER.To change the definition of a trigger, use ALTER TRIGGER.

Para obtener más información sobre cómo determinar las dependencias de un desencadenador específico, consulte sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL) y sys.dm_sql_referencing_entities (Transact-SQL).For more information about determining dependencies for a specific trigger, see sys.sql_expression_dependencies, sys.dm_sql_referenced_entities (Transact-SQL), and sys.dm_sql_referencing_entities (Transact-SQL).

Para obtener más información sobre cómo ver el texto del desencadenador, consulte sp_helptext (Transact-SQL) y sys.sql_modules (Transact-SQL).For more information about viewing the text of the trigger, see sp_helptext (Transact-SQL) and sys.sql_modules (Transact-SQL).

Para obtener más información sobre cómo ver una lista de desencadenadores existentes, consulte sys.triggers (Transact-SQL) and sys.server_triggers (Transact-SQL).For more information about viewing a list of existing triggers, see sys.triggers (Transact-SQL) and sys.server_triggers (Transact-SQL).

PermisosPermissions

Para quitar un desencadenador DML se requiere el permiso ALTER en la tabla o vista en la que está definido el desencadenador.To drop a DML trigger requires ALTER permission on the table or view on which the trigger is defined.

Para anular un desencadenador DDL definido con ámbito de servidor (ON ALL SERVER) o un desencadenador logon se requiere el permiso CONTROL SERVER en el servidor.To drop a DDL trigger defined with server scope (ON ALL SERVER) or a logon trigger requires CONTROL SERVER permission in the server. Para quitar un desencadenador DDL definido con el ámbito de base de datos (ON DATABASE) se requiere el permiso ALTER ANY DATABASE DDL TRIGGER en la base de datos actual.To drop a DDL trigger defined with database scope (ON DATABASE) requires ALTER ANY DATABASE DDL TRIGGER permission in the current database.

EjemplosExamples

A.A. Quitar un desencadenador DMLDropping a DML trigger

En el siguiente ejemplo se quita el desencadenador employee_insupd de la base de datos AdventureWorks2012AdventureWorks2012.The following example drops the employee_insupd trigger in the AdventureWorks2012AdventureWorks2012 database. (A partir de SQL Server 2016 (13.x)SQL Server 2016 (13.x) se puede usar la sintaxis DROP TRIGGER IF EXISTS).(Beginning with SQL Server 2016 (13.x)SQL Server 2016 (13.x) you can use the DROP TRIGGER IF EXISTS syntax.)

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

B.B. Quitar un desencadenador DDLDropping a DDL trigger

En el siguiente ejemplo se quita el desencadenador DDL safety.The following example drops DDL trigger safety.

Importante

Puesto que los desencadenadores DDL no están en el ámbito del esquema y, por tanto, no aparecen en la vista de catálogo sys.objects, la función OBJECT_ID no se puede utilizar para consultar si existen en la base de datos.Because DDL triggers are not schema-scoped and, therefore do not appear in the sys.objects catalog view, the OBJECT_ID function cannot be used to query whether they exist in the database. Los objetos que no están en el ámbito del esquema deben consultarse utilizando la vista de catálogo apropiada.Objects that are not schema-scoped must be queried by using the appropriate catalog view. Para los desencadenadores DDL, use sys.triggers.For DDL triggers, use sys.triggers.

DROP TRIGGER safety  
ON DATABASE;  

Consulte tambiénSee Also

ALTER TRIGGER (Transact-SQL) ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL) CREATE TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL) ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL) DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL) EVENTDATA (Transact-SQL)
Obtener información acerca de los desencadenadores DML Get Information About DML Triggers
sp_help (Transact-SQL) sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL) sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL) sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL) sys.trigger_events (Transact-SQL)
sys.sql_modules (Transact-SQL) sys.sql_modules (Transact-SQL)
sys.assembly_modules (Transact-SQL) sys.assembly_modules (Transact-SQL)
sys.server_triggers (Transact-SQL) sys.server_triggers (Transact-SQL)
sys.server_trigger_events (Transact-SQL) sys.server_trigger_events (Transact-SQL)
sys.server_sql_modules (Transact-SQL) sys.server_sql_modules (Transact-SQL)
sys.server_assembly_modules (Transact-SQL)sys.server_assembly_modules (Transact-SQL)