Buen dia apreciados ingenieros
tengo un sp donde le ingreso informacion a 7 tablas
pero mi problema radica en lo Siguiente
tengo la tablas
PERSONAS
CORREOS
CORREOS_PERSONAS
Hago el insert en la tabla PERSONAS
Hago el insert en la tabla CORREOS
Por medio de consultas recupero los ultimos id insertados
y los guardo en variables
luego inserto en la tabla CORREOS_PERSONAS los datos guardados en las variables
mi problema esta que cuando genera un error el insert de la tabla personas
de igual me inserta en las otras 2 tablas
tengo el siguiente sp
Código SQL:
Ver originalCREATE proc insertaPersonas
@documento AS INT
,@codigo AS INT
,@nombres AS VARCHAR(100)
,@apellidos AS VARCHAR(100)
,@fechanacimiento AS DATE
,@correo AS VARCHAR(100)
,@Observacorreo AS VARCHAR(100)
,@telefono AS VARCHAR(100)
,@observaciontelefono AS VARCHAR(100)
,@genero AS VARCHAR(100)
,@observaciongenero AS VARCHAR(100)
,@cargo AS VARCHAR(100)
,@observacioncargo AS VARCHAR(100)
,@estadocivil AS VARCHAR(100)
,@observacionestadocivil AS VARCHAR(100)
AS
BEGIN try
BEGIN TRANSACTION
INSERT INTO PERSONAS (Documento,Codigo_empresario,Nombres,apellidos,fecha_nacimiento)
VALUES(@documento,@codigo,@nombres,@apellidos,@fechanacimiento);
INSERT INTO CORREOS(correo_electronico,estado_correo_electronico)
VALUES(@correo,@Observacorreo);
DECLARE @idpersona AS INT
SET @idpersona='';
SET @idpersona = (SELECT MAX (id_persona) FROM PERSONAS)
DECLARE @idcorreo AS INT
SET @idcorreo = (SELECT MAX (id_correo_electronico) FROM CORREOS)
INSERT INTO CORREOS_PERSONAS (id_persona,id_correo_electronico)
VALUES(@idpersona,@idcorreo);
INSERT INTO TELEFONOS (numero_telefono,observacion_numero)
VALUES(@telefono,@observaciontelefono);
DECLARE @idtelefono AS INT
SET @idtelefono = (SELECT MAX (id_telefono) FROM TELEFONOS)
INSERT INTO TELEFONOS_PERSONAS (id_persona,id_telefono,estado_telefono)
VALUES(@idpersona,@idtelefono,@observaciontelefono);
INSERT INTO GENERO( nombre_genero,observacion_genero,id_persona)VALUES(@genero,@observaciongenero,@idpersona);
INSERT INTO CARGO(nombre_cargo,observacion,id_persona)VALUES (@cargo,@observacioncargo,@idpersona)
INSERT INTO ESTADO_CIVIL(nombre_estado_civil,observacion,id_persona)VALUES (@estadocivil,@observacionestadocivil,@idpersona)
commit tran
END try
BEGIN catch
ROLLBACK
print error_message()
END catch