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

Stored Procedure con dos insertar

Estas en el tema de Stored Procedure con dos insertar en el foro de Mysql en Foros del Web. Estimados, les hago una consulta recien me estoy metiendo con mysql pero ya vengo trabajando hace baste con mssql, lo que quiero hacer el facil. ...
  #1 (permalink)  
Antiguo 20/08/2010, 12:52
 
Fecha de Ingreso: agosto-2010
Mensajes: 2
Antigüedad: 13 años, 8 meses
Puntos: 0
Pregunta Stored Procedure con dos insertar

Estimados, les hago una consulta recien me estoy metiendo con mysql pero ya vengo trabajando hace baste con mssql, lo que quiero hacer el facil.

Insertar un registro - Lo hago
obtener el ultimo insertado - lo hago
y con el id obtenido insertarlo en otra base

por sepado todo me funciona pero no puede hacerlo funcionar todo junto.

gracias! Adrian

DELIMITER $$
create PROCEDURE InsertarPersonas2(in pPersonaNombre varchar(100),
in pPersonaApellido varchar(100),
in pPersonaTelefono varchar(50),
in pPersonaCelular varchar(50),
in pPersonaDireccion varchar(100),
in pPersonaMail varchar(100),
in pPersonaWeb varchar(100),
in pPersonaObservaciones varchar(1024),
in pPersonaAuxiliar1 varchar(1024))
begin
INSERT INTO personas (
IdPersona ,
PersonaNombre ,
PersonaApellido ,
PersonaTelefono ,
PersonaCelular ,
PersonaDireccion ,
PersonaMail ,
PersonaWeb ,
PersonaObservaciones ,
PersonaAuxiliar1,
PersonaFechaCreacion
)VALUES (
NULL , pPersonaNombre, pPersonaApellido, pPersonaTelefono, pPersonaCelular, pPersonaDireccion, pPersonaMail, pPersonaWeb, pPersonaObservaciones, pPersonaAuxiliar1, now());

---1° Insertar

SET @Idp=0;
SELECT @Idp:=@@Identity FROM Personas GROUP BY @@Identity; ---2°Obtengo el id insertado


----realizo el segundo insert.
INSERT INTO sujetos (
IdSujeto ,
IdGeneral ,
IdTipoSujeto)VALUES (NULL , @Idp, '1')
end;
$$
DELIMITER;
  #2 (permalink)  
Antiguo 20/08/2010, 12:59
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Stored Procedure con dos insertar

En general, hay formas más simples:
Código MySQL:
Ver original
  1. DELIMITER $$
  2. CREATE PROCEDURE InsertarPersonas2(
  3.     in pPersonaNombre varchar(100),
  4.     in pPersonaApellido varchar(100),
  5.     in pPersonaTelefono varchar(50),
  6.     in pPersonaCelular varchar(50),
  7.     in pPersonaDireccion varchar(100),
  8.     in pPersonaMail varchar(100),
  9.     in pPersonaWeb varchar(100),
  10.     in pPersonaObservaciones varchar(1024),
  11.     in pPersonaAuxiliar1 varchar(1024))
  12.     INSERT INTO personas (
  13.         PersonaNombre ,
  14.         PersonaApellido ,
  15.         PersonaTelefono ,
  16.         PersonaCelular ,
  17.         PersonaDireccion ,
  18.         PersonaMail ,
  19.         PersonaWeb ,
  20.         PersonaObservaciones ,
  21.         PersonaAuxiliar1,
  22.         PersonaFechaCreacion
  23.         )
  24.     VALUES (
  25.         pPersonaNombre,
  26.         pPersonaApellido,
  27.         pPersonaTelefono,
  28.         pPersonaCelular,
  29.         pPersonaDireccion,
  30.         pPersonaMail,
  31.         pPersonaWeb,
  32.         pPersonaObservaciones,
  33.         pPersonaAuxiliar1,
  34.         now());
  35.  
  36.     -- 1° Insertar
  37.     SET @Idp=LAST_INSERT_ID();
  38.    
  39.     -- realizo el segundo insert.
  40.     INSERT INTO sujetos (
  41.         IdGeneral ,
  42.         IdTipoSujeto)
  43.     VALUES (@Idp, '1');
  44.     -- Y si quiers el segundo:
  45.     SET @Idp2=LAST_INSERT_ID();
  46. $$
  47. DELIMITER;

Para eso existe la función LAST_INSERT_ID();
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: insert, insertar, procedure, stored, procedimiento, almacenar
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 22:08.