Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/07/2015, 17:30
beimar24
 
Fecha de Ingreso: febrero-2008
Mensajes: 14
Antigüedad: 16 años, 9 meses
Puntos: 0
procedimiento almacenado transaccion

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 original
  1. CREATE proc insertaPersonas
  2. @documento AS INT
  3. ,@codigo AS INT
  4. ,@nombres AS VARCHAR(100)
  5. ,@apellidos AS VARCHAR(100)
  6. ,@fechanacimiento AS DATE
  7.  
  8. ,@correo AS VARCHAR(100)
  9. ,@Observacorreo AS VARCHAR(100)
  10.  
  11. ,@telefono AS VARCHAR(100)
  12. ,@observaciontelefono AS VARCHAR(100)
  13.  
  14. ,@genero AS VARCHAR(100)
  15. ,@observaciongenero AS VARCHAR(100)
  16.  
  17. ,@cargo AS VARCHAR(100)
  18. ,@observacioncargo AS VARCHAR(100)
  19.  
  20. ,@estadocivil AS VARCHAR(100)
  21. ,@observacionestadocivil AS VARCHAR(100)
  22.  
  23.  
  24. AS
  25. BEGIN try
  26.     BEGIN TRANSACTION
  27.    
  28. INSERT INTO  PERSONAS (Documento,Codigo_empresario,Nombres,apellidos,fecha_nacimiento)
  29. VALUES(@documento,@codigo,@nombres,@apellidos,@fechanacimiento);
  30.  
  31. INSERT INTO  CORREOS(correo_electronico,estado_correo_electronico)
  32. VALUES(@correo,@Observacorreo);
  33.  
  34. DECLARE @idpersona AS INT
  35. SET @idpersona='';
  36. SET @idpersona = (SELECT MAX (id_persona) FROM PERSONAS)
  37.  
  38. DECLARE @idcorreo AS INT
  39. SET @idcorreo = (SELECT MAX (id_correo_electronico) FROM CORREOS)
  40.  
  41. INSERT INTO  CORREOS_PERSONAS (id_persona,id_correo_electronico)
  42. VALUES(@idpersona,@idcorreo);
  43.  
  44. INSERT INTO  TELEFONOS (numero_telefono,observacion_numero)
  45. VALUES(@telefono,@observaciontelefono);
  46.  
  47. DECLARE @idtelefono AS INT
  48. SET @idtelefono = (SELECT MAX (id_telefono) FROM TELEFONOS)
  49.  
  50. INSERT INTO  TELEFONOS_PERSONAS (id_persona,id_telefono,estado_telefono)
  51. VALUES(@idpersona,@idtelefono,@observaciontelefono);
  52.  
  53. INSERT INTO GENERO( nombre_genero,observacion_genero,id_persona)VALUES(@genero,@observaciongenero,@idpersona);
  54.  
  55. INSERT INTO CARGO(nombre_cargo,observacion,id_persona)VALUES (@cargo,@observacioncargo,@idpersona)
  56.  
  57. INSERT INTO ESTADO_CIVIL(nombre_estado_civil,observacion,id_persona)VALUES (@estadocivil,@observacionestadocivil,@idpersona)
  58.  
  59. commit tran
  60. END try
  61. BEGIN catch
  62.     ROLLBACK
  63.     print error_message()
  64. END catch

Última edición por gnzsoloyo; 01/08/2015 a las 17:24 Razón: SQL Sin etiquetar