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

Recuperando las últimas identificaciones insertadas para múltiples filas

Llamar a last_insert_id() le da la identificación de la PRIMERA fila insertada en el último lote. Se garantiza que todos los demás insertados serán secuenciales.

A menos que esté haciendo algo muy extraño, esto le permite calcular el ID de cada fila con bastante facilidad.

En realidad, el comportamiento varía en 5.1 dependiendo de la configuración del parámetro de modo de incremento automático de innodb; esto no debería importar. Siempre que no cambie el valor predeterminado, verá el comportamiento esperado.

Hay casos ocasionales en los que esto no hace lo que espera y no es útil, como si hace una ACTUALIZACIÓN DE CLAVE DUPLICADA o INSERTAR IGNORAR. En estos casos, deberá hacer algo más para calcular los ID de cada fila.

Pero para un lote de INSERCIÓN normal y corriente, sin valores especificados para la columna de aumento automático, es fácil.

Una descripción completa de cómo los incrementos automáticos son manejado en innodb está aquí