Eliminar o deshabilitar desencadenadores DML

Se aplica a:SQL ServerAzure SQL DatabaseInstancia administrada de Azure SQLBase de datos SQL en Microsoft Fabric

En este tema se describe cómo eliminar o deshabilitar un desencadenador DML en SQL Server mediante SQL Server Management Studio o Transact-SQL.

En este tema

Antes de empezar

Recomendaciones

  • Cuando el desencadenador se elimina, se quita de la base de datos actual. Ni la tabla ni los datos en los que se basa se ven afectados. Si se elimina una tabla, se eliminarán automáticamente todos los desencadenadores que contenga.

  • Un desencadenador se habilita de forma predeterminada cuando se crea.

  • Al deshabilitar un desencadenador no se quita. Sigue siendo un objeto de la base de datos actual. Sin embargo, el disparador no se activa cuando se ejecuta cualquier INSERT, UPDATE, o DELETE instrucción en la que fue programado. Los desencadenadores deshabilitados se pueden volver a habilitar. Si se habilita un desencadenador, éste no se vuelve a crear. El desencadenador se activa de la misma forma que cuando se creó originalmente.

Seguridad

Permisos

Para eliminar un desencadenador DML se necesita el permiso ALTER en la tabla o vista en la que está definido el desencadenador.

Para deshabilitar o habilitar un desencadenador DML, el usuario debe contar como mínimo con el permiso ALTER en la tabla o vista en la que se creó el desencadenador.

Uso de SQL Server Management Studio

Para eliminar un desencadenador DML

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y, a continuación, expándala.

  2. Expanda la base de datos que desee, expanda Tablasy, a continuación, expanda la tabla que contiene el desencadenador que desea eliminar.

  3. Expanda Desencadenadores, haga clic con el botón derecho en el desencadenador que quiera eliminar y luego haga clic en Eliminar.

  4. En el cuadro de diálogo Eliminar objeto , compruebe que se ha especificado el desencadenador deseado y haga clic en Aceptar.

Para deshabilitar y habilitar un desencadenador DML

  1. En el Explorador de objetos, conéctese a una instancia del Motor de base de datos y, a continuación, expándala.

  2. Expanda la base de datos que desee, expanda Tablasy, a continuación, expanda la tabla que contiene el desencadenador que desea deshabilitar.

  3. Expanda Desencadenadores, haga clic con el botón derecho en el desencadenador que quiera deshabilitar y luego haga clic en Deshabilitar.

  4. Para habilitar el desencadenador, haga clic en Habilitar.

Usar Transact-SQL

Para eliminar un desencadenador DML

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue los ejemplos siguientes en la ventana de consultas. Ejecuta la CREATE TRIGGER sentencia para crear el Sales.bonus_reminder disparador. Para eliminar el disparador, ejecuta la DROP TRIGGER sentencia.

--Create the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL  
    DROP TRIGGER Sales.bonus_reminder;  
GO  
CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  
--Delete the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID ('Sales.bonus_reminder', 'TR') IS NOT NULL  
   DROP TRIGGER Sales.bonus_reminder;  
GO  
  

Para deshabilitar y habilitar un desencadenador DML

  1. Conéctese con el Motor de base de datos.

  2. En la barra Estándar, haga clic en Nueva consulta.

  3. Copie y pegue los ejemplos siguientes en la ventana de consultas. Ejecuta la CREATE TRIGGER sentencia para crear el Sales.bonus_reminder disparador. Para desactivar y habilitar el disparador, ejecuta las DISABLE TRIGGER sentencias y ENABLE TRIGGER respectivamente.

--Create the trigger.  
USE AdventureWorks2022;  
GO  
IF OBJECT_ID(N'Sales.bonus_reminder', N'TR') IS NOT NULL  
    DROP TRIGGER Sales.bonus_reminder;  
GO  
CREATE TRIGGER Sales.bonus_reminder  
ON Sales.SalesPersonQuotaHistory  
WITH ENCRYPTION  
AFTER INSERT, UPDATE   
AS RAISERROR ('Notify Compensation', 16, 10);  
GO  
  
--Disable the trigger.  
USE AdventureWorks2022;  
GO  
DISABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  
  
--Enable the trigger.  
USE AdventureWorks2022;  
GO  
ENABLE TRIGGER Sales.bonus_reminder ON Sales.SalesPersonQuotaHistory;  
GO  

Consulte también

ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
ENABLE TRIGGER (Transact-SQL)
DISABLE TRIGGER (Transact-SQL)
EVENTDATA (Transact-SQL)
Obtener información acerca de los desencadenadores DML
sp_help (Transact-SQL)
sp_helptrigger (Transact-SQL)
sys.triggers (Transact-SQL)
sys.trigger_events (Transact-SQL)
sys.sql_módulos (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)