Nunca he entendido para qué sirve una transacción anidada. La comisión de una transacción anidada no compromete nada; solo disminuye @@TRANCOUNT
. Y ROLLBACK
revierte todo.Propósito de las transacciones anidadas
BEGIN TRANSACTION
//do an update
BEGIN TRANSACTION
//do an insert
COMMIT TRANSACTION
COMMIT TRANSACTION
¿Cuál es la diferencia con esto:
BEGIN TRANSACTION
//do an update
//do an insert
COMMIT TRANSACTION
Por favor, dame un ejemplo por qué se deben utilizar transacciones anidadas y la forma en que hacen la diferencia.
Saludos, Petar
Puedo usar safepoints sin usar transacciones anidadas. El procedimiento almacenado es un buen punto (nunca he pensado en eso). Pero si no utilizo un procedimiento almacenado en mi transacción (o no llamo a otro código), ¿por qué debería necesitar transacciones anidadas? Constantemente veo ejemplos con transacciones anidadas y no veo el sentido de ellos. –
¿Las transacciones anidadas son útiles solo cuando se llama a un código transaccional externo? –
Estoy de acuerdo con usted y creo que son útiles para llamar al código transaccional externo. La capacidad técnica de SQL Server para manejar transacciones anidadas es importante y no está disponible en todos los sistemas DB. Hay algunos casos (como con los SP mencionados, donde también debería usar ['SET XACT_ABORT ON'] (http://stackoverflow.com/questions/1150032/what-is-the-benefit-of-using-set). -xact-abort-on-a-stored-procedure)) donde pueden anidar "naturalmente". Nunca utilicé explícitamente las transacciones anidadas. – Lucero