LAST_INSERT_ID() a une portée de session.
Il renverra la valeur d'identité insérée dans la session en cours.
Si vous n'insérez aucune ligne entre INSERT et LAST_INSERT_ID , alors tout fonctionnera correctement.
Notez cependant que pour plusieurs insertions de valeurs, il renverra l'identité de la première ligne insérée, pas la dernière :
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 */