Programación en castellano
Inicio > Foros > SQL Server > Transaccion no deshace los cambios en un SP ...
-Foros de debate

SQL Server
Lista de foros | Lista de mensajes de este foro

Privacidad: Recuerde que la información escrita en los foros de programación es 100% pública y que su ip será registrada asociada a su mensaje. Si encuentra un mensaje fuera de lugar, por favor, notifiquelo para su revisión y eliminación.

Transaccion no deshace los cambios en un SP ...
Enviado por Williams el día 30 de agosto de 2008

Hola a toda la comunidad de este foro, espero no repetir este post pero no encontre un tema relacionado.
Mi problema es que tengo el siguiente procedimiento:

create table x (idx int, nombre varchar(10))
go
-- PARA PROBAR LA EFECTIVIDAD DE UNA TRANSACCION, TRATO DE
-- INSERTAR UN REGISTRO EN UNA TABLA QUE NO EXISTE
create procedure spX
as
declare @fracaso int
set @fracaso=0
begin tran
insert into x values(3,'mayito')
if @@error!=0
set @fracaso=@@error
insert into y values(2,'vic') -- GENERA ERROR Y ABORTA EL PROCEDIMIENTO
if @@error!=0 -- ESTA VALIDACION Y LO QUE SIGUE NO SE EJECUTA
set @fracaso=@@error
insert into x values(1,'will')
if @@error!=0
set @fracaso=@@error
if @fracaso!=0
begin
print 'Error en la transaccion'
rollback tran
return -100
end
commit tran
go

exec spx

Al ejecutar el procedimiento en el Analizador de consultas, no obtengo lo que suponia, es decir, el procedimiento se termina inmediatamente despues de provocar el error al tratar de insertar en una tabla que ya no existe, en teoria, deberia continuar con las siguientes instrucciones hasta llegar al rollback o al commit pero no lo hace y por lo tanto no deshace la primera insercion.

Quisiera que los de mas alto nivel que yo me ilustraran por favor que es lo que esta ocurriendo.
Lo estoy probando en una version SQL Server 2000 en una maquina con Win XP.
Gracias de antemano por su amable respuesta.
Su servidor, Williams Rios.

 
Re: Transaccion no deshace los cambios en un SP ...
Enviado por mvallejos el día 9 de septiembre de 2008

Ese scrip genera la tabla y el procedimiento almacenado.
La ejecucion de eso seria

Exec spX

pruebalo

 


Tienda
Patrocinados
 

Copyright © 1999-2007 Programación en castellano. Todos los derechos reservados.
Formulario de Contacto - Datos legales - Publicidad
Mantenida por: Claudio y Dani.

Hospedaje web y servidores dedicados linux por Ferca Network

red internet: jugar gratis | amor | navidad 2009 | registro de dominios | servidores dedicados
más internet: comprar | gratis | posicionamiento en buscadores | decoración libre | gifs animados