Categorías destacadas
programacion php    
Lista de foros

Transaccion no deshace los cambios en un SP ...


Williams
09 de Septiembre del 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.


mvallejos
09 de Septiembre del 2008

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

Exec spX

pruebalo

 
BBDD
Entornos de desarrollo
Entretenimiento
Herramientas
Internet
Lenguajes de script
Lenguajes imperativos
Lenguajes orientados a objeto
Otros lenguajes
Plataformas
Teoría
Varios
Copyright © 1998-2011 Programación en Castellano. Todos los derechos reservados
Datos legales | Politica de privacidad | Contacte con nosotros | Publicidad

Diseño web y desarrollo web. Un proyecto de los hermanos Carrero.

Red internet:
Juegos gratis | Servidores dedicados
Más internet: Password | Directorio de weblogs | Favicon