Su comentario de aclaración dice que le interesa asegurarse de que LAST_INSERT_ID() no dé el resultado incorrecto si ocurre otro INSERT concurrente. Tenga la seguridad de que es seguro utilizar LAST_INSERT_ID() independientemente de otra actividad simultánea. LAST_INSERT_ID() devuelve solo la ID más reciente generada durante la sesión actual.
Puede hacerlo por uno mismo:
- abrir dos ventanas de concha, ejecutar cliente mysql en todos y conectarse a la base de datos .
- Shell 1: INSERTAR en una tabla con una clave AUTO_INCREMENT .
- Shell 1: SELECCIONAR LAST_INSERT_ID(), ver resultado.
- Shell 2: INSERTAR en la misma tabla.
- Shell 2: SELECT LAST_INSERT_ID(), ver resultado diferente del shell 1.
- Shell 1: SELECT LAST_INSERT_ID() de nuevo, ver una repetición de principios resultado.
Si lo piensas bien, esta es la única forma que tiene sentido. Todas las bases de datos que admiten mecanismos de autoaumento deben actuar de esta manera. Si el resultado depende de una condición de carrera con otros clientes que posiblemente INSERTen al mismo tiempo, entonces no habría una manera confiable de obtener el último valor de ID insertado en su sesión actual.
Aclaración: El código tiene insertar y luego un last_insert_id. Dos de estas sentencias se ejecutan casi al mismo tiempo y el orden ejecutivo se convierte en inserto # 1 inserto # 2 LAST_INSERT_ID # 1 Completa y devuelve el ID de inserción # 2 LAST_INSERT_ID # 2 completa y devuelve el ID de inserción # 2 ¿Puede suceder esto? – MPX