Tengo algunos desencadenantes en algunas tablas que realizan una función cuando se elimina o actualiza algo. Durante una transacción, si el desencadenador se ejecuta y luego se retrotrae la transacción, ¿el disparador también se revierte?¿Los desencadenantes se retrotraen si una transacción falla en SQL Server?
Respuesta
Sí.
Mientras el activador 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 activador, no se deshace. El efectos del desencadenador será.
OK, una transacción real que se retrotrae en el momento de la inserción/actualización/eliminación también revertiría las acciones que el desencadenador tomó. 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.
Por lo tanto, si elimino desde la tabla 1 y el desencadenante se activa y la transacción falla, todo se restituye.
Si borro de la tabla 1 y los fuegos desencadenantes y borro de la tabla 2 como parte del mismo script o proc almacenado o dynamicSQL enviado desde la aplicación, pueden suceder dos cosas. Si tiene una transacción explícita formal (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ó
- 1. SQL Server: ¿Las operaciones físicas se retrotraen después de ROLLBACK?
- 2. Transacción de SQL Server 2008, ¿se requiere reversión?
- 3. transacción Sql - SQL Server o C#?
- 4. Transacción de SQL Server y instrucción SELECT
- 5. SQL Server 2005: interbloqueo de transacción
- 6. SQL Server: transacción de procedimiento almacenado
- 7. ¿Qué sucede si no comprometes una transacción a una base de datos (por ejemplo, SQL Server)?
- 8. Sql server COMMIT sin Tran | ¿Transacción?
- 9. No puedo ver los desencadenantes que creé en el servidor de administración de SQL Server 2008
- 10. transacciones anidadas en SQL Server
- 11. ¿Cómo verificar que haya una transacción que aún no se haya comprometido en SQL Server 2005?
- 12. ¿Un bloque de transacción reduce el rendimiento en SQL Server?
- 13. Qué ocurre si selecciono SCOPE_IDENTITY() después de que falla una inserción (SQL Server 2005)
- 14. ¿Por qué el siguiente SQL Server inserta interbloqueo cuando se ejecuta dentro de una transacción?
- 15. SQL Server SI NO EXISTE ¿Uso?
- 16. ¿Cómo puedo eliminar todos los desencadenantes en una base de datos MySQL usando una declaración SQL?
- 17. Sql Server 2008 Sintonización de grandes transacciones (700k + filas/transacción)
- 18. Mysql: cuándo utilizar los desencadenantes
- 19. SQL Server ROWLOCK sobre un SELECCIONAR si no existe INSERT transacción
- 20. Sesión de SQL Server
- 21. SQL Server y pérdida de conexión en medio de una transacción
- 22. MySQL deshabilita todos los desencadenantes
- 23. Si una transacción PHP PDO falla, ¿debo volver a la función anterior() explícitamente?
- 24. ¿Cómo verifico si existe una columna en SQL Server?
- 25. ¿Dónde se activa un servidor para guardar en SQL Server?
- 26. SQL Server y .NET: inserción falla (! Silencio) en el código, pero no cuando se ejecuta manualmente
- 27. Cómo comprobar si SQL Server Agent se está ejecutando
- 28. SQL Server se muestran los elementos en orden específico
- 29. SQL en SQL Server
- 30. ¿Es posible ejecutar múltiples instrucciones DDL dentro de una transacción (dentro de SQL Server)?