Mailinglisten-Archive |
Peter Muessig-Trapp wrote: > > Moin moin! > > ich hab mir eine Tabelle "basisdaten" angelegt mit einem > INT-Feld AUTO_INCREMENT > > Mit > > (1) insert into basisdaten (id) values (NULL) > > schreibe ich eine neue Zeile (im Feld id steht dann die > naechst groessere noch nicht verwendete Zahl). > > Diese lese ich mit > > (2) $id=mysql_insert_id(); [php3-Syntax] > > aus. Das funktioniert auch so weit wunderbar. > > Was passiert nun aber, wenn just zwischen (1) und (2) > ein anderer User daher kommt und ebenfalls (1) abschickt? > > Also: > > User1 (1) > User2 (1) > User1 (2) > User2 (2) > > Was kriegt User1 jetzt zurueckgeliefert? Seine id oder > die von User2? Und was erhaelt User2? > > Fuer Hinweise zur Loesung sehr dankbar!! > > Gruesse aus Hannover, Peter Hallo Peter Sei ganz unbesorgt. a) Mit dem INSERT reservierst Du Dir deine AUTO_INCREMENT Zahl. Das heisst, das kein anderer diese verwenden kann, solange sie nicht geloescht wird. b) Der Wert, der von LAST_INSERT_ID() (== SQL-Pendent zu mysql_insert_id() in php) zurueckgeliefert wird, ist vom Client abhaengig. Das heisst, das User1 nur seinen zuletzt erzeugten AUTO_INCREMENT Wert sieht, egal wie viele andere User waehrenddessen AUTO_INCREMENT Werte erzeugen, solange jeder User eine eigene Connection besitzt. Gruesse aus Konstanz Christian
php::bar PHP Wiki - Listenarchive