Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Transacciones con procedimientos almacenados

Estas en el tema de Transacciones con procedimientos almacenados en el foro de Bases de Datos General en Foros del Web. Buenas... tengo una duda en cuanto al uso de transacciones con procedimientos almacenados... quizá sea una tontería lo que intento hacer, pero me estoy liando... ...
  #1 (permalink)  
Antiguo 16/02/2005, 04:39
 
Fecha de Ingreso: agosto-2004
Mensajes: 37
Antigüedad: 20 años, 4 meses
Puntos: 0
Pregunta Transacciones con procedimientos almacenados

Buenas... tengo una duda en cuanto al uso de transacciones con procedimientos almacenados... quizá sea una tontería lo que intento hacer, pero me estoy liando...

Mi problema es el siguiente: Tengo dos procedimientos almacenados para realizar la inserción de un usuario... al insertarlo, hay que insertar en tres tablas diferentes, de forma que si algo falla se tendrían que deshacer los cambios hechos. Mi problema es que no sé si lo he hecho bien (no sé si las transacciones están bien utilizadas donde las pongo) ya que no puedo "comprobar" si tengo bien hecho todo esto del procedimiento almacenados y de las transacciones, pues no sé como "hacer" que falle algo... pues con el Analizador de consultas de sql server, si pongo un campo con otro formato, antes de ejecutar el procedimiento, ya me está dando el fallo.

Los procedimientos almacenados junto con las transacciones que he utilizado vienen siendo lo siguiente:

CREATE PROCEDURE pa_Usuario_InsertarAdministrador_ConTransaccion
@cod_usu varchar(10),
@n varchar(9),
@puesto_doc varchar(30),
@cod_r varchar(10),
@f_cad_cuenta datetime
AS
BEGIN TRAN InsertarUsu
INSERT INTO Usuario (codigo_usuario, nif)
VALUES (@cod_usu, @n)

IF @@ERROR>0
ROLLBACK TRAN InsertarUsu

INSERT INTO Usuario_Administrador (codigo_usuario, puesto_docente)
VALUES (@cod_usu, @puesto_doc)

IF @@ERROR>0
ROLLBACK TRAN InsertarUsu

BEGIN TRAN InsertarTP
EXEC pa_TienePerfil_InsertarTienePerfil2 @cod_usu, @cod_r, @f_cad_cuenta

IF @@ERROR>0
ROLLBACK TRAN InsertarTP

COMMIT TRAN InsertarTP

COMMIT TRAN InsertarUsu

GO

Y el segundo es:

CREATE PROCEDURE pa_TienePerfil_InsertarTienePerfil2
@cod_usu varchar(10),
@cod_r varchar(10),
@f_cad_cuenta datetime
AS
INSERT INTO Tiene_Perfil (codigo_usuario, codigo_rol, fecha_caducidad_cuenta)
VALUES (@cod_usu, @cod_r, @f_cad_cuenta)
GO

Gracias por la ayuda...
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:04.