tipos - ¿Los desencadenadores se retrotraen si una transacción falla en SQL Server?
ejemplos de triggers en sql server 2012 (2)
Tengo algunos desencadenantes en algunas tablas que realizan una función cuando algo se elimina o se actualiza. Durante una transacción, si el desencadenador se ejecuta y luego se retrotrae la transacción, ¿el disparador también se revierte?
OK, una transacción real que se retrotrae en el momento de la inserción / actualización / eliminación también revertiría cualquier acción que tomara el desencadenante. Sin embargo, si está tomando más de una acción en una transacción, el procesamiento de la transacción tendría que ser explícito en su código para que la reversión ocurra con las acciones tempranas.
Entonces, si elimino desde la tabla 1 y el disparador se dispara y luego la transacción falla, todo se restituye.
Si elimino de la tabla 1 y los desencadenantes se activan y elimino de la tabla 2 como parte de la misma secuencia de comandos o proc almacenado o dynamicSQL enviado desde la aplicación, pueden ocurrir dos cosas. Si tiene una transacción formal explícita (que maneja correctamente los errores), todo lo que sucede, incluidas las acciones desencadenantes, se retrotrae, si confiaba en una transacción implícita (que solo revierte la última acción), entonces no cambiaría nada antes de la parte que falló
Sí.
Siempre que el disparador se active como parte de la transacción, cualquier cambio en las marcas dentro de la base de datos también se revertirá.
Nitpick: un disparador es un disparador, no se deshace. Los efectos del disparador serán.