Servus,
bin bislang stiller Mitleser gewesen, aber jetzt hab' ich auch mal eine Frage. Es geht darum, daß ich gern mysql_insert_id() prozeßsicher einsetzen würde, sodaß das Ergebnis eines anderen Insert into ... das Ergebnis nicht beeinflußt. Leider konnte mir weder die Suche im Forum noch die Doku (mySQL, PHP) weiterhelfen, deswegen stelle ich das mal hier rein und hoffe, es läßt sich lösen:
Nehmen wir als Beispiel mal einen gut besuchten Server, auf dem gerade zwei Prozesse, A und B, einen neuen Datensatz per Insert in dieselbe Tabelle einer Datenbank einfügen wollen. Dann könnte folgendes passieren:
- A schreibt
- B schreibt
- A führt mysql_insert_id() aus
- B führt mysql_insert_id() aus
Dann bekommt A die falsche und B die richtige insert_id. Das ist natürlich nicht der Sinn der Sache, und da das DBMS nicht wissen kann, ob die ID abgefragt wird und wenn ja, wann, wird es sich nicht die Mühe machen, Prozesse zu unterscheiden, falls es das überhaupt kann. Was ich also wissen will: wie geht das, daß man mysql_insert_id() - oder eine andere Konstruktion - so einsetzt, daß man die insert_id der letzten Einfügeoperation, welche der aktuell ausgeführte Prozess ausgeführt hat, erhält, unabhängig davon, was andere Prozesse gerade mit der Datenbank machen?
*grübel*
Bin bislang auf keine wirklich brauchbare Lösung gekommen und hoffe, sowas gibt's überhaupt...
Matthias
bin bislang stiller Mitleser gewesen, aber jetzt hab' ich auch mal eine Frage. Es geht darum, daß ich gern mysql_insert_id() prozeßsicher einsetzen würde, sodaß das Ergebnis eines anderen Insert into ... das Ergebnis nicht beeinflußt. Leider konnte mir weder die Suche im Forum noch die Doku (mySQL, PHP) weiterhelfen, deswegen stelle ich das mal hier rein und hoffe, es läßt sich lösen:
Nehmen wir als Beispiel mal einen gut besuchten Server, auf dem gerade zwei Prozesse, A und B, einen neuen Datensatz per Insert in dieselbe Tabelle einer Datenbank einfügen wollen. Dann könnte folgendes passieren:
- A schreibt
- B schreibt
- A führt mysql_insert_id() aus
- B führt mysql_insert_id() aus
Dann bekommt A die falsche und B die richtige insert_id. Das ist natürlich nicht der Sinn der Sache, und da das DBMS nicht wissen kann, ob die ID abgefragt wird und wenn ja, wann, wird es sich nicht die Mühe machen, Prozesse zu unterscheiden, falls es das überhaupt kann. Was ich also wissen will: wie geht das, daß man mysql_insert_id() - oder eine andere Konstruktion - so einsetzt, daß man die insert_id der letzten Einfügeoperation, welche der aktuell ausgeführte Prozess ausgeführt hat, erhält, unabhängig davon, was andere Prozesse gerade mit der Datenbank machen?
*grübel*
Bin bislang auf keine wirklich brauchbare Lösung gekommen und hoffe, sowas gibt's überhaupt...
Matthias
Kommentar