Matze: MySQL: letzte autoincrement ID auslesen

Beitrag lesen

Hallo johny7,

Mein eigentliche Frage ist: Was passiert, wenn zwischen dem Anlagen des Datensatzes und der Abfrage mit SELECT LAST_INSERT_ID() ein weiterer Datensatz (z.B. von einem anderen Client aus) angelegt worden ist?

Dann bekommst du dessen ID. Deshalb sollte man den Eintrag in die Tabelle und die Abfrage der ID atomar kapseln. Ähnliche Beispiele wären Update-Funktionen.

Wie kann ich garantieren, dass ich die ID des von mir gerade angelegten Datensatzes bekomme? Und wird das mit mysql_insert_id() automatisch garantiert?

Frage die ID sofort nach dem INSERT ab. Theoretisch gibt es da zwar immernoch eine Race-Condition, die ist aber zu vernachlässigen. Ansonsten beschäftige dich näher mit dem Thema -> http://www.google.de/#hl=de&q=race+condition+mysql.

Grüße, Matze