Insert ID teruggeven direct na INSERT INTO statement
Ik heb een script, waarmee er een INSERT in een database wordt gedaan. Vervolgens wil ik het ID van deze nieuwe record weergeven (of nog een bewerking mee uitvoeren). Dat doe ik simpelweg in twee query's: eerst INSERT INTO en daarna selecteer ik het laatste insert id met SELECT MAX(column) of LAST_INSERT_ID().
Het probleem is echter dat theoretisch gezien iemand anders toevallig tussen die twee query's óók een record toevoegt, waardoor het ophalen van de zojuist ingevoegde query dus fout gaat.
Is er een manier om de LAST_INSERT_ID van een INSERT-query terug te krijgen in één query?
Greetings
Ik bedoelde eigenlijk dat het probleem is dat theoretisch gezien dit nummer van mysql_insert_id() onjuist zou kunnen zijn. Zie voorbeeld hieronder:
Persoon A en persoon B zitten allebei achter hun eigen computers.
Er staan drie rijen in de database, en het volgende AUTO_INCREMENT-nummer is 4.
Vervolgens voeren, in deze volgorde, de personen deze acties uit:
Persoon A: Voert INSERT-statement uit. Nieuw ID (id = 4) is toegevoegd.
Persoon B: Voert INSERT-statement uit. Nieuw ID (id = 5) is toegevoegd.
Persoon A: Voert mysql_isert_id() uit, deze zou 5 opleveren, omdat persoon B ertussen is gekomen.
Maarrr... Ik heb ff getest door twee browsers te openen en allebei een script te runnen waarbij de tussentijd wat groter is (met behulp van sleep(int)) om de situatie van hierboven te simuleren. Het wonderlijke is dan dat het WEL goed blijkt te gaan!
#prima
Dat klopt! Aangezien het kijkt naar de laatste query die gebruikt is.
Ah, ik snap ineens hoe de vork in de steel zit! Elke bezoeker heeft natuurlijk een eigen SQL-verbinding! Toch?
Maurits de Jong op 20/06/2011 15:45:20:
Dat scheelt weer!
Ah, ik snap ineens hoe de vork in de steel zit! Elke bezoeker heeft natuurlijk een eigen SQL-verbinding! Toch?
Ah, ik snap ineens hoe de vork in de steel zit! Elke bezoeker heeft natuurlijk een eigen SQL-verbinding! Toch?
Exact.