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 */