Uw verduidelijkende opmerking zegt dat u er zeker van wilt zijn dat LAST_INSERT_ID() niet het verkeerde resultaat geeft als er nog een gelijktijdige INSERT plaatsvindt. U kunt er zeker van zijn dat het veilig is om LAST_INSERT_ID() te gebruiken, ongeacht andere gelijktijdige activiteiten. LAST_INSERT_ID() retourneert alleen de meest recente ID die tijdens de huidige sessie is gegenereerd.
Je kunt het zelf proberen:
- Open twee shell-vensters, voer in elk mysqlclient uit en maak verbinding met de database.
- Shell 1:INSERT in een tabel met een AUTO_INCREMENT-sleutel.
- Shell 1:SELECT LAST_INSERT_ID(), zie resultaat.
- Shell 2:INSERT in dezelfde tabel.
- Shell 2:SELECT LAST_INSERT_ID(), zie resultaat anders dan shell 1.
- Shell 1:SELECT LAST_INSERT_ID()nogmaals, zie een herhaling van eerder resultaat.
Als je erover nadenkt, is dit de enige manier die logisch is. Alle databases die auto-incrementing key-mechanismen ondersteunen, moeten op deze manier werken. Als het resultaat afhangt van een raceconditie waarbij andere clients mogelijk gelijktijdig INSERT, is er geen betrouwbare manier om de laatst ingevoegde ID-waarde in uw huidige sessie te krijgen.