Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/02/2015, 16:26
0774
 
Fecha de Ingreso: febrero-2015
Mensajes: 2
Antigüedad: 9 años, 9 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