LAST_INSERT_ID()
ha ambito di sessione.
Restituirà il valore di identità inserito nella sessione corrente.
Se non inserisci alcuna riga tra INSERT
e LAST_INSERT_ID
, allora funzionerà bene.
Nota però che per inserimenti di più valori, restituirà l'identità della prima riga inserita, non l'ultima:
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 */