2011-11-29 21 views
9

He buscado alto y bajo, y no he podido encontrar una respuesta satisfactoria a mi pregunta. Lo que tiende a reducirse a cómo funciona exactamente un TRANSACTION en SQL Server.TSQL - Desactivar disparadores en transacciones

Básicamente, hará esto lo que creo que hace.

BEGIN TRAN 

DISABLE [my_update_trigger] ON [my_table] 

/*.. Do Some Updates ..*/ 

ENABLE [my_update_trigger] ON [my_table] 

COMMIT TRAN 

Quiero ser capaz de corregir algunos datos en una tabla, sin ejecutar la actualización desencadena tengo sobre la mesa. Esto es para una aplicación web, por lo que me gustaría asegurarme de que si se realiza una actualización sobre la mesa desde la aplicación web, mientras estoy haciendo mi trabajo, el [my_update_trigger] todavía se activará para la aplicación web.

+1

Hay existentes puesto que pueden ayudar a [tsql manera a desactivar un disparador en el ámbito de una transacción] [1] [1]: http://stackoverflow.com/questions/174600/t-sql-is-there-a-way-to-disable-a-trigger-in-the-scope-of-a-transaction – Turbot

Respuesta

2

El material actualización está bien - Deshabilitar habilitar etc.

DISABLE TRIGGER [my_update_trigger] ON [my_table] 

/*.. Do Some Updates ..*/ 

ENABLE TRIGGER [my_update_trigger] ON [my_table] 

Tener un vistazo a la página de MSDN: http://msdn.microsoft.com/en-us/library/ms189748.aspx

Por lo que es sesión específica embargo: yo dudo si eso fuera a trabajar - los deshabilitados/habilitados son DDL en lugar de DML, es decir, actúan sobre los objetos de la base de datos en lugar de los datos. Yo no habría pensado que esto sería en el ámbito de una transacción