Insert ID teruggeven direct na INSERT INTO statement

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Maurits de Jong

Maurits de Jong

20/06/2011 15:04:48
Quote Anchor link
Hi allen,

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
 
PHP hulp

PHP hulp

19/04/2024 07:02:07
 
Johan van der Molen

Johan van der Molen

20/06/2011 15:06:31
Quote Anchor link
Gebruik

mysql_insert_id
Gewijzigd op 20/06/2011 15:07:51 door Johan van der Molen
 
Maurits de Jong

Maurits de Jong

20/06/2011 15:27:30
Quote Anchor link
Bedankt!

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
 
Johan van der Molen

Johan van der Molen

20/06/2011 15:32:58
Quote Anchor link
Dat klopt! Aangezien het kijkt naar de laatste query die gebruikt is.
 
Maurits de Jong

Maurits de Jong

20/06/2011 15:45:20
Quote Anchor link
Dat scheelt weer!
Ah, ik snap ineens hoe de vork in de steel zit! Elke bezoeker heeft natuurlijk een eigen SQL-verbinding! Toch?
 
Johan van der Molen

Johan van der Molen

20/06/2011 15:47:26
Quote Anchor link
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?


Exact.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.