mysql_insert_id();

pangu

Angesehenes Mitglied
nehmen wir an ich lege einen datensatz:
QUOTE $eintrag = "INSERT INTO abc (id, xxx) VALUES ('', $xxx)";
$eintragen = mysql_query($eintrag);


id wird automatisch per auto_increment eingetragen.

brauche diese id jetzt für einen zweiten eintrag:

QUOTE $id_abc=mysql_insert_id();
$eintrag = "INSERT INTO xyz (id, id_abc) VALUES ('', $id_abc)";
$eintragen = mysql_query($eintrag);



meine frage: wenn jetzt mehrere user das script gleichzeitig ausführen, kann es dann im ungünstigsten fall zu überschneidungen /verwechslungen kommen?
 
Nein, da die ID von der Datenbankengine hochgezählt wird und erst nach dem Eintragen des Datensatzes zurückgegeben wird. Die Abfragen werden dabei sequenziell von dem Datenbank-Server abgearbeitet.
Je nach verwenderter Datenbankengine gibt es dann natürlich noch Sicherungen für Datenkonsistenz, welche auftreten könnten, wie z. B. bei einen Stromausfall und dergleichen.



MfG Sascha Ahlers
 
QUOTE (pangu @ Mo 18.9.2006, 21:19)$id_abc=mysql_insert_id();
$eintrag = "INSERT INTO xyz (id, id_abc) VALUES ('', $id_abc)";
$eintragen = mysql_query($eintrag);


Ich bin zwar kein mySql-Verwender. Aber wenn das Script aus irgendeinem Grund nach der ersten Zeile abbricht, dann enthält die Tabelle wohl einen Eintrag, der nur aus einer ID besteht.

Außerdem müßte das voraussetzen, daß sonst keine NotNull- oder Unique-Constraints definiert sind - sonst gäbe es bei mehrfachen Nur-ID-Einträgen Abbrüche.

Bei späteren Abfragen müßte man all jene fehlerhaften Einträge herausfiltern, also die Where-Bedingungen geeignet modifizieren.
 
QUOTE (jAuer @ Di 19.9.2006, 8:54) Ich bin zwar kein mySql-Verwender. Aber wenn das Script aus irgendeinem Grund nach der ersten Zeile abbricht, dann enthält die Tabelle wohl einen Eintrag, der nur aus einer ID besteht. [...]

Das stimmt auch, das meinte ich mit den Sicherungen für Datenkonsistenzen, aber auf die Behandlung einer automatisch vergebenen Unique ID hat dies keine Auswirkung, es wird einfach weitergezählt.
Gut es ist unschön, wenn sowas passiert, aber sowas muss der Entwickler für jedes Programm selber entscheiden (können).
 
Zurück
Oben