LAST_INSERT_ID()
ma zakres sesji.
Zwróci wartość tożsamości wstawioną w bieżącej sesji.
Jeśli nie wstawisz żadnych wierszy między INSERT
i LAST_INSERT_ID
, wtedy wszystko będzie działać dobrze.
Należy jednak pamiętać, że w przypadku wielu wstawionych wartości zwróci tożsamość pierwszego wstawionego wiersza, a nie ostatniego:
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 */