Cuando hago una sola fila INSERTen una tabla que tiene una AUTO_INCREMENTcolumna, me gustaría usar la LAST_INSERT_ID()función para devolver el nuevo AUTO_INCREMENTvalor editado para esa fila.
Como muchos desarrolladores y administradores de Microsoft SQL Server, sin duda, saben que la funcionalidad equivalente en SQL Server ( SCOPE_IDENTITYy @@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_INCREMENTvalor generado para la declaración más reciente que afecta a unaAUTO_INCREMENTcolumna de ese cliente . Este valor no puede verse afectado por otros clientes, incluso si generanAUTO_INCREMENTsus 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_INCREMENTcolumnas 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.