LAST_INSERT_ID()
har sessionsomfång.
Det kommer att returnera identitetsvärdet som infogats i den aktuella sessionen.
Om du inte infogar några rader mellan INSERT
och LAST_INSERT_ID
, då kommer det att fungera bra.
Observera dock att för multipla värdeinfogningar kommer den att returnera identiteten för den första raden som infogades, inte den sista:
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 */