Cuando hago una sola fila INSERT
en una tabla que tiene una AUTO_INCREMENT
columna, me gustaría usar la LAST_INSERT_ID()
función para devolver el nuevo AUTO_INCREMENT
valor editado para esa fila.
Como muchos desarrolladores y administradores de Microsoft SQL Server, sin duda, saben que la funcionalidad equivalente en SQL Server ( SCOPE_IDENTITY
y @@IDENTITY
) no ha estado exenta de problemas .
Sé que el estado de los documentos MySQL:
La ID que se generó se mantiene en el servidor por conexión . Esto significa que el valor devuelto por la función a un cliente dado es el primer
AUTO_INCREMENT
valor generado para la declaración más reciente que afecta a unaAUTO_INCREMENT
columna de ese cliente . Este valor no puede verse afectado por otros clientes, incluso si generanAUTO_INCREMENT
sus propios valores. 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.
e incluso ir tan lejos como para decir:
Usar
LAST_INSERT_ID()
yAUTO_INCREMENT
columnas simultáneamente de múltiples clientes es perfectamente válido.
¿Existen riesgos o escenarios conocidos que puedan hacer que LAST_INSERT_ID()
no se devuelva el valor correcto?
Estoy usando MySQL 5.5 en CentOS 5.5 x64 y Fedora 16 x64 y el motor InnoDB.