forma correcta de usar TRAN, ROLLBACK y COMMIT

16/07/2004 - 00:19 por Yan Cantuarias | Informe spam
Hola, estoy tratando de aprender el uso de TRAN y quisiera saber si lo estoy
usando correctamente, se supone que si hago un insert a la tabla YAN, y al
hacer un insert a la tabla YAN2 me da error, el ROLLBACK eliminará lo
ingresado en la tabla YAN, no?
lo he echo asi, pero cuando despues que me da error hago un select, se queda
el select en proceso...
alguin me puede guiar por favor... se lo agradeceré mucho


Adjunto el pequeño codigo...

Declare @UltimoID integer
BEGIN TRAN T1

select top 1 @UltimoID=Id_YAN from YAN Order by Id_YAN desc
Insert YAN (Id_YAN, Des_YAN) Values (@UltimoID + 1,'XXX')

Insert YAN2 (Id_YAN, Des_YAN) Values (2,'XXX')

if @@error<>0
ROLLBACK TRAN T1
else
COMMIT TRAN T1

GO
 

Leer las respuestas

#1 MAXI
16/07/2004 - 00:35 | Informe spam
hmm es extraño porque el rollback debe deshacer la transaccion, lo que veo
que tenes mal es el @@error te falta poner uno en la otra operacion, recorda
que esto traera si la ultima ejecucion ha tenido algun error, por lo cual
ten cuidado, proba esto:

select top 1 @UltimoID=Id_YAN from YAN Order by Id_YAN desc
Insert YAN (Id_YAN, Des_YAN) Values (@UltimoID + 1,'XXX')

if @@error<>0
ROLLBACK TRAN T1
return
else
COMMIT TRAN T1
return

Insert YAN2 (Id_YAN, Des_YAN) Values (2,'XXX')

if @@error<>0
ROLLBACK TRAN T1
return
else
COMMIT TRAN T1
return


=
Suerte








Maxi

Buenos Aires - Argentina

Desarrollador .NET 3 Estrellas

Mail: Maxi_accotto[arroba]speedy.com.ar

MSN:


"Yan Cantuarias" escribió en el mensaje
news:
Hola, estoy tratando de aprender el uso de TRAN y quisiera saber si lo


estoy
usando correctamente, se supone que si hago un insert a la tabla YAN, y


al
hacer un insert a la tabla YAN2 me da error, el ROLLBACK eliminará lo
ingresado en la tabla YAN, no?
lo he echo asi, pero cuando despues que me da error hago un select, se


queda
el select en proceso...
alguin me puede guiar por favor... se lo agradeceré mucho


Adjunto el pequeño codigo...

Declare @UltimoID integer
BEGIN TRAN T1

select top 1 @UltimoID=Id_YAN from YAN Order by Id_YAN desc
Insert YAN (Id_YAN, Des_YAN) Values (@UltimoID + 1,'XXX')

Insert YAN2 (Id_YAN, Des_YAN) Values (2,'XXX')

if @@error<>0
ROLLBACK TRAN T1
else
COMMIT TRAN T1

GO


Preguntas similares