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...