sql >> Base de Datos >  >> RDS >> Mysql

Pregunta fácil de mysql con respecto a las claves principales y una inserción

Su comentario de aclaración dice que está interesado en asegurarse de que LAST_INSERT_ID() no dé un resultado incorrecto si ocurre otro INSERT concurrente. Tenga la seguridad de que es seguro usar LAST_INSERT_ID() independientemente de otra actividad simultánea. LAST_INSERT_ID() devuelve solo el ID más reciente generado durante la sesión actual.

Puedes probarlo tú mismo:

  1. Abra dos ventanas de shell, ejecute mysqlclient en cada una y conéctese a la base de datos.
  2. Shell 1:INSERT en una tabla con una clave AUTO_INCREMENT.
  3. Shell 1:SELECCIONE LAST_INSERT_ID(), vea el resultado.
  4. Shell 2:INSERTAR en la misma tabla.
  5. Shell 2:SELECCIONE LAST_INSERT_ID(), vea un resultado diferente al shell 1.
  6. Shell 1:SELECCIONE LAST_INSERT_ID() de nuevo, vea una repetición del resultado anterior.

Si lo piensas bien, esta es la única manera que tiene sentido. Todas las bases de datos que admiten mecanismos de clave de incremento automático deben actuar de esta manera. Si el resultado depende de una condición de carrera con otros clientes posiblemente INSERTAR simultáneamente, entonces no habría una forma confiable de obtener el último valor de ID insertado en su sesión actual.