transaccion

01/06/2005 - 17:17 por Eduardo De Luca | Informe spam
Que tal , amigos . TEngo un problema que seguramente le estoy pifiando en el
codigo , tengo (en el codigo descrito abajo) programada un transaccion, y se
si produce un error en el update se vuelve para atras todo. El echo es que
produzo el error intencionalmete en un update pero igual me actualiza las
otras tablas.
Que estoy haciendo mal?

les paso el codigo



begin tran t1

update in_e1mov_aa set o_cuo_mov='0'
update in_e1mov_aa set v_mov_cta= alt_id from in_e1_alta_aut where
alt_tabla='cta' and alt_clave=o_cta_clave_mov
update in_e1mov_aa set v_mov_mon= mon_id from monedas where
rtrim(mon_nombre_corto)=rtrim(o_mon_mov) and mon_baja_fecha is null
update in_e1mov_aa set v_id_con_mov= con_id from conceptos where
rtrim(con_nombre_corto)=rtrim(o_con_mov) and con_baja_fecha is null
update in_e1mov_aa set v_id_scn_con= scn_id from sub_conceptos where
rtrim(scn_nombre_corto)=rtrim(o_scn_mov) and scn_baja_fecha is null

if @@error =0
begin
commit tran t1
end
else
begin

rollback tran t1
end
 

Leer las respuestas

#1 Alejandro Mesa
01/06/2005 - 17:32 | Informe spam
Eduardo,

Debes chequear el valor de @@error despues de cada sentencia.

Ejemplo:

begin transaction

update in_e1mov_aa set o_cuo_mov='0'

if @@error != 0 goto ErrorHandler

update in_e1mov_aa
set v_mov_cta= alt_id
from in_e1_alta_aut
where alt_tabla='cta' and alt_clave=o_cta_clave_mov

if @@error != 0 goto ErrorHandler

...

commit transaction

return @@error

ErrorHandler:

if @@trancount > 0 rollback transaction

return -1
go


AMB

"Eduardo De Luca" wrote:

Que tal , amigos . TEngo un problema que seguramente le estoy pifiando en el
codigo , tengo (en el codigo descrito abajo) programada un transaccion, y se
si produce un error en el update se vuelve para atras todo. El echo es que
produzo el error intencionalmete en un update pero igual me actualiza las
otras tablas.
Que estoy haciendo mal?

les paso el codigo



begin tran t1

update in_e1mov_aa set o_cuo_mov='0'
update in_e1mov_aa set v_mov_cta= alt_id from in_e1_alta_aut where
alt_tabla='cta' and alt_clave=o_cta_clave_mov
update in_e1mov_aa set v_mov_mon= mon_id from monedas where
rtrim(mon_nombre_corto)=rtrim(o_mon_mov) and mon_baja_fecha is null
update in_e1mov_aa set v_id_con_mov= con_id from conceptos where
rtrim(con_nombre_corto)=rtrim(o_con_mov) and con_baja_fecha is null
update in_e1mov_aa set v_id_scn_con= scn_id from sub_conceptos where
rtrim(scn_nombre_corto)=rtrim(o_scn_mov) and scn_baja_fecha is null

if @@error =0
begin
commit tran t1
end
else
begin

rollback tran t1
end



Preguntas similares