Compartir a través de


ENABLE TRIGGER (Transact-SQL)

Actualizado: 12 de diciembre de 2006

Habilita un desencadenador DML, DDL o logon.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

ENABLE 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 desencadenadores DDL o logon.
  • trigger_name
    Es el nombre del desencadenador que se va a habilitar.
  • ALL
    Indica que todos los desencadenadores del ámbito de la cláusula ON están habilitados.
  • object_name
    Es el nombre de la tabla o 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
    En el caso de un desencadenador DDL o logon, indica que trigger_name se creó o se modificó para ejecutarse en el ámbito del servidor.

Notas

Si se habilita un desencadenador, éste no se vuelve a crear. Un desencadenador deshabilitado sigue existiendo como objeto en la base de datos actual, pero no se activa. La habilitación de un desencadenador hace que se active cuando se ejecute cualquier evento en el que se programó originalmente. Los desencadenadores se deshabilitan con DISABLE TRIGGER. Los desencadenadores DML definidos en las tablas también se pueden deshabilitar o habilitar con ALTER TABLE.

Permisos

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

Para habilitar un desencadenador DDL o logon con ámbito de servidor (ON ALL SERVER), un usuario debe tener el permiso CONTROL SERVER en el servidor. Para habilitar un desencadenador DDL con ámbito de la base de datos (ON DATABASE), un usuario debe tener permiso ALTER ANY DATABASE DDL TRIGGER en la base de datos actual.

Ejemplos

A. Habilitar un desencadenador DML en una tabla

En el siguiente ejemplo se deshabilita el desencadenador uAddress que se creó en la tabla Address y, a continuación, se habilita.

USE AdventureWorks;
GO
DISABLE TRIGGER Person.uAddress ON Person.Address;
GO
ENABLE Trigger Person.uAddress ON Person.Address;
GO

B. Habilitar un desencadenador DDL

En el siguiente ejemplo se crea un desencadenador DDL safety con ámbito de la base de datos y, a continuación, se deshabilita.

IF EXISTS (SELECT * FROM sys.triggers
    WHERE parent_class = 0 AND name = 'safety')
DROP TRIGGER safety ON DATABASE;
GO
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
ENABLE TRIGGER safety ON DATABASE;
GO

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

En el ejemplo siguiente se habilitan todos los desencadenadores DDL y logon que se crearon en el ámbito del servidor.

USE AdventureWorks;
GO
ENABLE Trigger ALL ON ALL SERVER;
GO

Vea también

Referencia

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

Ayuda e información

Obtener ayuda sobre SQL Server 2005

Historial de cambios

Versión Historial

12 de diciembre de 2006

Contenido nuevo:
  • Se ha agregado información a lo largo del tema acerca de los desencadenadores logon, que se introdujeron en el Service Pack 2 de SQL Server 2005.