Compartir por


DISABLE TRIGGER (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance

Deshabilita un desencadenador.

Convenciones de sintaxis de Transact-SQL

Sintaxis

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL }  
ON { object_name | DATABASE | ALL SERVER } [ ; ]  

Argumentos

schema_name
Es el nombre del esquema al que pertenece el desencadenador. schema_name no se puede especificar para los desencadenadores DDL o de inicio de sesión.

trigger_name
Es el nombre del desencadenador que se va a deshabilitar.

ALL
Indica que todos los desencadenadores definidos en el ámbito de la cláusula ON están deshabilitados.

Precaución

SQL Server crea desencadenadores en las bases de datos que se publican para la replicación de mezcla. Si se especifica ALL en las bases de datos publicadas, se deshabilitarán los desencadenadores y se interrumpirá la replicación. Compruebe que la base de datos actual no se publica para replicación de mezcla antes de especificar ALL.

object_name
Es el nombre de la tabla o la vista en la que se creó el desencadenador DML trigger_name para su ejecución.

DATABASE
En el caso de un desencadenador DDL, indica que trigger_name se creó o se modificó para ejecutarse en el ámbito de la base de datos.

ALL SERVER
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.

En el caso de un desencadenador DDL, indica que trigger_name se creó o se modificó para ejecutarse en el ámbito de servidor. ALL SERVER también se aplica a los desencadenadores de inicio de sesión.

Nota:

Esta opción no está disponible en las bases de datos independientes.

Observaciones

De forma predeterminada, los desencadenadores se habilitan cuando se crean. Al deshabilitar un desencadenador no se quita. Sigue siendo un objeto de la base de datos actual. Sin embargo, el desencadenador no se activa cuando se ejecuta una instrucción Transact-SQL en la que se programó. Los desencadenadores se pueden volver a habilitar con ENABLE TRIGGER. Los desencadenadores DML definidos en tablas también se pueden habilitar o deshabilitar mediante el uso de ALTER TABLE.

Si se cambia el desencadenador mediante la instrucción ALTER TRIGGER, se habilita el desencadenador.

Permisos

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

Para deshabilitar un desencadenador DDL con ámbito de servidor (ON ALL SERVER) o un desencadenador de inicio de sesión, el usuario debe tener el permiso CONTROL SERVER en el servidor. Para deshabilitar un desencadenador DDL con ámbito en la base de datos (ON DATABASE) el usuario debe contar, como mínimo, con un permiso ALTER ANY DATABASE DDL TRIGGER en la base de datos actual.

Ejemplos

Los ejemplos de código de Transact-SQL de este artículo utilizan la base de datos de ejemplo AdventureWorks2022 o AdventureWorksDW2022, que se pueden descargar desde la página principal de Ejemplos y proyectos de la comunidad de Microsoft SQL Server.

A Deshabilitar un desencadenador DML en una tabla

En el ejemplo siguiente se deshabilita el desencadenador uAddress, que se creó en la tabla Person.

DISABLE TRIGGER Person.uAddress ON Person.Address;  
GO  

B. Deshabilitar un desencadenador DDL

En el ejemplo siguiente se crea un desencadenador DDL safety, con ámbito en la base de datos, y después se deshabilita.

CREATE TRIGGER safety   
ON DATABASE   
FOR DROP_TABLE, ALTER_TABLE   
AS   
   PRINT 'You must disable Trigger "safety" to drop or alter tables!'   
   ROLLBACK;  
GO  
DISABLE TRIGGER safety ON DATABASE;  
GO  

C. Deshabilitar todos los desencadenadores que se definieron con el mismo ámbito

En el ejemplo siguiente se deshabilitan todos los desencadenadores DDL creados en el ámbito de servidor.

DISABLE Trigger ALL ON ALL SERVER;  
GO  

Consulte también

ENABLE TRIGGER (Transact-SQL)
ALTER TRIGGER (Transact-SQL)
CREATE TRIGGER (Transact-SQL)
DROP TRIGGER (Transact-SQL)
sys.triggers (Transact-SQL)