Ver Mensaje Individual
  #1 (permalink)  
Antiguo 29/05/2014, 03:30
aeb_asturias
 
Fecha de Ingreso: marzo-2004
Mensajes: 550
Antigüedad: 20 años, 1 mes
Puntos: 7
obtener el id generado de una sentencia insert

Hola a todos/as,

Tengo la siguiente duda:

Tengo que hacer un insert en una tabla que tiene por clave primaria un campo llamado "id" de tipo auto_increment.

Necesito saber el id que se ha generado en la sentencia anterior, ya que ese campo actua de foreign key en otra tabla donde tengo que insertar información también.

He leido por internet que hay muchas formas de obtener el último id insertado en una tabla como por ejemplo:

Código:
mysql_insert_id()
Código:
LAST_INSERT_ID()

La duda que me entra es la siguiente:

Se trata de un sistema multiusuario donde se pueden estar realizando inserciones en dicha tabla de forma simultanea. Si ejecuto la instrucción anterior, ¿no puede ser, que se haya producido un insert por parte de otro usuario después del mio y me devuelve otro id que no corresponde con mi inserción?



Leyendo la documentación de las funciones anteriores he visto que aparece lo siguiente:

"El último ID generado se mantiene en el servidor para cada conexión. Esto significa que el valor de la función retorna a cada cliente el valor AUTO_INCREMENT más reciente generado por ese cliente. Este valor no puede ser afectado por otros clientes, incluso si generan valores AUTO_INCREMENT ellos mismos. Este comportamiento asegura que reciba sus propios IDs sin tener en cuenta la actividad de otros clientes y sin la necesidad de bloqueos o transacciones."


Si no entiendo mal, con el uso de las funcines anteriores evitaria el problema que comenté antes de trabajar con sistemas con múltiples usuarios no?

Saludos.

Última edición por aeb_asturias; 29/05/2014 a las 04:12