LAST_INSERT_ID()
tiene ámbito de sesión.
Devolverá el valor de identidad insertado en la sesión actual.
Si no inserta ninguna fila entre INSERT
y LAST_INSERT_ID
, entonces funcionará bien.
Sin embargo, tenga en cuenta que para inserciones de valores múltiples, devolverá la identidad de la primera fila insertada, no la última:
INSERT
INTO mytable (identity_column)
VALUES (NULL)
SELECT LAST_INSERT_ID()
--
1
INSERT
INTO mytable (identity_column)
VALUES (NULL), (NULL)
/* This inserts rows 2 and 3 */
SELECT LAST_INSERT_ID()
--
2
/* But this returns 2, not 3 */