2011-05-06 14 views
12

devuelva la identificación incorrecta. De lo que he leído LAST_INSERT_ID() recupera la identificación de la última instrucción de inserción para ejecutar. Si la última instrucción de inserción se ejecuta en su conexión o la última inserción se ejecuta en la base de datos para todas las conexiones? Supongo que lo que estoy tratando de preguntar es: en un sitio web con una base de datos ocupada ¿cuáles son las posibilidades de que el siguiente código devuelva la identificación incorrecta, y hay un método para evitar que otro bloquee la base de datos? deMySQL y la posibilidad de que ID LAST_INSERT_ID()

INSERT INTO example (string) VALUE ('something'); 
SELECT LAST_INSERT_ID(); 

Would PHP mysql_insert_id() ser una solución mejor, o debo consultar los datos que se acaba de insertar y Identificación del agarre de esa manera?

Respuesta

11

es que la última instrucción de inserción ejecuta en la conexión o en ...

El last_insert de su conexión.

mysql_insert_id de Would PHP() ser una solución mejor

No, es la misma.

o debería simplemente consultar los datos que acabo de insertar y obtener la identificación de esa manera?

Eso es manera de la manera más lenta

Enlace: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

Presupuesto de ese vínculo:

El ID que se ha generado se mantiene en el servidor en una base por conexión. Esto significa que el valor devuelto por la función a un cliente dado es el primer valor de AUTO_INCREMENT generado para la declaración más reciente que afecta a una columna AUTO_INCREMENT por ese cliente. Este valor no puede verse afectado por otros clientes, incluso si generan sus propios valores AUTO_INCREMENT. Este comportamiento garantiza que cada cliente pueda recuperar su propia ID sin preocuparse por la actividad de otros clientes, y sin la necesidad de bloqueos o transacciones.

+0

Gracias por la respuesta rápida e informativa. –

Cuestiones relacionadas