He visto el uso de transacciones en algunos casos, pero nunca entendí realmente en qué situaciones deberían usarse. ¿Cómo y cuándo se deben usar las transacciones (comience el extracto de la transacción)? He leído que Microsoft no sugiere usar declaraciones de transacción (commit, rollback) dentro de un disparador y procedimiento almacenado.Cómo usar las transacciones (comenzar transacción, confirmar transacción)?
Respuesta
Las transacciones se pueden utilizar junto con el manejo de errores en procedimientos almacenados o scripts SQL al insertar o manipular datos para asegurarse de que todo sea coherente.
Por ejemplo, si tiene un procedimiento almacenado que inserta registros en una tabla primaria y una tabla secundaria, querrá asegurarse de que el registro principal se inserta primero; si falla, puede deshacer los cambios para que no tenga un registro de niño huérfano.
Erland Sommarskog tiene un great article sobre cómo utilizar el manejo de errores en SQL Server.
Por último, ¿dónde ha sugerido Microsoft no usar transacciones en procedimientos almacenados? Pensaría que los procedimientos almacenados serían un lugar ideal para usarlos.
Si yo estaba transfiriendo moey de una cuenta a otra, me gustaría que fuera 100% de éxito o el 100% de fracaso:
UPDATE PersonalAccount SET Balance = Balance - 100 WHERE Username = 'gbn'
--what if the server caught fire here?
UPDATE SavingsAccount SET Balance = Balance + 100 WHERE Username = 'gbn'
En cuanto a lo que se lee, excepto completa basura sin necesidad de utilizar COMIENZA TRAN en un desencadenador.
Un ejemplo de "Nested stored procedures containing TRY CATCH ROLLBACK pattern?"
- 1. Cómo confirmar manualmente una transacción gestionada
- 2. Revertir transacción utilizando registro de transacciones
- 3. GUARDAR TRANSACCIÓN vs COMIENZO TRANSACCIÓN (Servidor SQL) cómo anidar transacciones muy bien
- 4. transacción Primavera partes internas
- 5. SQLITE (interfaz C/C++) - Cómo confirmar una transacción
- 6. kohana transacción con orm
- 7. Transacción dentro de la transacción
- 8. Apache Camel - transacción en las rutas
- 9. transacción con dapper dot net
- 10. Transacción en SOA
- 11. Sql Server 2008 Sintonización de grandes transacciones (700k + filas/transacción)
- 12. commit y transacción mysql
- 13. ¿Cómo revertir una transacción en Android?
- 14. La transacción ha abortado
- 15. Diferencia entre transacción y TransactionScope
- 16. transacción tsql
- 17. SKPaymentQueue restoreCompletedTransactions: ninguna transacción restaurado
- 18. ¿Se puede usar MySqlBulkLoader con una transacción?
- 19. Transacción distribuida completada. O bien aliste esta sesión en una nueva transacción o la transacción NULA
- 20. ¿Qué es una "transacción distribuida"?
- 21. Transacción en Access
- 22. Transacción MySQL y gatillo
- 23. ¿Pueden las diferentes conexiones de la misma base de datos sqlite comenzar transacciones al mismo tiempo?
- 24. ¿Debería haber una transacción para consultas leídas?
- 25. Transacción de base de datos de Magento
- 26. Cómo revertir una transacción en Entity Framework
- 27. Problemas de transacción PHP PDO
- 28. ¿Cómo evitar que JPA retrase la transacción?
- 29. transacción Sql - SQL Server o C#?
- 30. Retroceso de transacción EJB3
Gracias, tal vez mi afirmación sobre era demasiado recto: hay una advertencia de que el uso de confirmar o deshacer dentro de un procedimiento o activador puede provocar errores: http://msdn.microsoft.com /en-us/library/ms187844(v=SQL.100).aspx – juur