LAST_INSERT_ID()
har sessionsomfang.
Det returnerer den identitetsværdi, der er indsat i den aktuelle session.
Hvis du ikke indsætter nogen rækker mellem INSERT
og LAST_INSERT_ID
, så fungerer det okay.
Bemærk dog, at for flere værdiindsættelser vil det returnere identiteten af den første række, der er indsat, ikke den sidste:
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 */