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

Preguntas similare

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:
Mostrar la cita
estoy
Mostrar la cita
al
Mostrar la cita
queda
Mostrar la cita
#2 klod
16/07/2004 - 05:14 | Informe spam
En una transacción no debes tener dos commit como los que planteastes. En
ese caso nunca se realiza el segundo insert. debe ser:

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
BEGIN
ROLLBACK TRAN T1
return
END

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

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



"MAXI" wrote in message
news:
Mostrar la cita
recorda
Mostrar la cita
#3 Yan Cantuarias
16/07/2004 - 17:07 | Informe spam
Gracias amigos por la informacion...
"klod" escribió en el mensaje
news:
Mostrar la cita
veo
Mostrar la cita
cual
Mostrar la cita
y
Mostrar la cita
Ads by Google
Search Busqueda sugerida