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

mysql_insert_id(): Es necesario bloquear la tabla?

Estas en el tema de mysql_insert_id(): Es necesario bloquear la tabla? en el foro de Mysql en Foros del Web. Hola a todos, Necesito conocer el ID (autoincrement) del último registro insertado en una tabla, para lo cual utilizo la función "mysql_insert_id()". El INSERT y ...
  #1 (permalink)  
Antiguo 30/11/2007, 11:06
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
mysql_insert_id(): Es necesario bloquear la tabla?

Hola a todos,


Necesito conocer el ID (autoincrement) del último registro insertado en una tabla, para lo cual utilizo la función "mysql_insert_id()". El INSERT y la función "mysql_insert_id()" se ejecutan dentro de un script PHP.


Mi duda es la siguiente:

Supongamos que dos usuarios (usuario A y usuario B) se conectan a la web y ambos ejecutan el script simultaneamente ejecutándose las sentencias en el siguiente orden:


Script usuario A: Inserta registro id=10
Script usuario B: Inserta registro id=11
Script usuario A: id_A=mysql_insert_id()
Script usuario B: id_B=mysql_insert_id()

¿Podría darse el caso de id_A=11? En tal caso...¿habría que bloquer la tabla para que no se pudiese ejecutar el script de B hasta que no hubiera terminado el script de A?

Espero que se haya entendido mi duda.

Un saludo a todos.
  #2 (permalink)  
Antiguo 30/11/2007, 11:31
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, 5 meses
Puntos: 2658
Re: mysql_insert_id(): Es necesario bloquear la tabla?

Si vas a manipular tablas en forma remota, siempre es preferible hacer un bloque de escritura usando trasnsacciones. porque no podés a priori establecer si habrá inconsistencia de lecturas mientras estás haceiendo esa tarea.
  #3 (permalink)  
Antiguo 30/11/2007, 11:39
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
Re: mysql_insert_id(): Es necesario bloquear la tabla?

Muchas gracias por tu respesta gnzsolyo.

He estado mirando por internet y me he dado cuenta de que la función mysql_insert_id() lleva como argumento la "conexion" (mysql_insert_id($conexion)) . Entonces, puede ser que la peticion del ID que hace "mysql_insert_id()" esté asociada al último INSER que se ha ejecutado en la misma conexión. Si es así...no habría problema, no? que crees?

saludos.
  #4 (permalink)  
Antiguo 30/11/2007, 13:12
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
Re: mysql_insert_id(): Es necesario bloquear la tabla?

mysql_insert_id() trae el ID generado para el insert que se acabo de realizar no el ultimo id insertado en la tabla.

Si se quisiera saber el ultimo ID insertado en la tabla seria hciendo un select del maximo ID de la tabla o con la funcion mysql_last_id()

Eso tengo entendido
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 03:49.