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

[SOLUCIONADO] Obtener ultimo ID insertado sin perder la concurrencia y obtener un ID erroneo

Estas en el tema de Obtener ultimo ID insertado sin perder la concurrencia y obtener un ID erroneo en el foro de Bases de Datos General en Foros del Web. Hola gente, quería consultar si lo que estoy haciendo esta bien para obtener el ultimo ID insertado en una tabla. Estoy utilizando el método LAST_INSERT_ID() ...
  #1 (permalink)  
Antiguo 05/02/2015, 16:26
 
Fecha de Ingreso: febrero-2015
Mensajes: 2
Antigüedad: 9 años, 2 meses
Puntos: 0
Obtener ultimo ID insertado sin perder la concurrencia y obtener un ID erroneo

Hola gente, quería consultar si lo que estoy haciendo esta bien para obtener el ultimo ID insertado en una tabla. Estoy utilizando el método LAST_INSERT_ID() dentro de un store procedure luego de insertar un elemento, tengo entendido que los store procedure mantienen las propiedades ACID mas que nada atomicidad y aislamiento que es lo me estaría interesando ahora :D, así que el método LAST_INSERT_ID() debería retornar el correcto. Me refiero que si luego de hacer el insert y antes del LAST_INSERT_ID alguien inserta otro elemento en un hilo de ejecución distinto, esto me devolvería un valor incorrecto al esperado.

básicamente lo que hago es lo siguiente:

Código MySQL:
Ver original
  1. delimiter !
  2.     CREATE PROCEDURE agregarMarcador(IN userFbID BIGINT UNSIGNED,IN eventID VARCHAR(256),IN tit VARCHAR(128),IN des VARCHAR(512), IN lat DOUBLE, IN lng DOUBLE, IN vencimiento TIMESTAMP, IN nombre_calle VARCHAR(256), IN num_dir SMALLINT UNSIGNED, OUT ID INT)
  3.     BEGIN
  4.               INSERT INTO marcadores(userID,evento,titulo,descripcion,latitud,longitud,calle,numero,fecha_vencimiento) VALUES (userFbID,eventID,tit,des,lat,lng,nombre_calle,num_dir,vencimiento);
  5.               SET ID = LAST_INSERT_ID();
  6.     END; !
  7.     delimiter ;

esto luego es llamado desde php para utilizar su valor, da igual eso no importa.

desde ya muchas gracias, saludos

Última edición por gnzsoloyo; 06/02/2015 a las 12:05
  #2 (permalink)  
Antiguo 06/02/2015, 12:02
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Obtener ultimo ID insertado sin perder la concurrencia y obtener un ID err

si lo vas a usar despues del insert, porque no usas la funcion max???
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 09/02/2015, 08:15
 
Fecha de Ingreso: febrero-2015
Mensajes: 2
Antigüedad: 9 años, 2 meses
Puntos: 0
Respuesta: Obtener ultimo ID insertado sin perder la concurrencia y obtener un ID err

Cita:
Iniciado por Libras Ver Mensaje
si lo vas a usar despues del insert, porque no usas la función max???
Por que la función max es con todas las tuplas de la base de dato y yo solo quería la ultima inserta por quien llamo a esa función, averiguando mejor el método last_insert_id() tiene encuentra la sesión y retorna el valor correcto. [URL="http://www.mysqltutorial.org/mysql-last_insert_id.aspx"]aquí la info. [/URL]
Desde ya muchas gracias , saludos.

Etiquetas: concurrencia, mysql
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 08:46.