SQL Neuesten "auto_increment" Wert nach Einfürgen?

Vacca

Cadet 4th Year
Registriert
Apr. 2007
Beiträge
78
Hallo!

PROBLEM GELÖST


Folgendes Problem: In eine Tabelle wird ein Satz eingefügt. Ein Feld ist eine Integer-Nummer, die automatisch erhöht wird (also eine ID mit auto_increment). Dann soll in einem zweiten Schritt in eine zweite Tabelle ein Satz eingefügt werden, wo genau diese Nummer aus der ersten Tabelle genutzt wird. Nur wie kann ich den gerade zuvor angelegten Integer-Wert erhalten, ohne Kunststücke zu machen?

Beispiel: Rechnung mit Rechnungsnummer, dann dazu einzelne Rechnungspositionen, wo ich die Rechnungsnummer brauche.
Weiteres Beispiel: Forum mit Themeneintrag in Thementabelle, dann dazu Eintrag mit Text. Auch da brauche ich die Themennummer.

Das ganze ist eine MySQL-Datenbank.


Danke für einen Tip,
- Der Vacca -
 
Zuletzt bearbeitet: (Problem gelöst)
hi,

Code:
 SELECT max(id) FROM tabelle

gruß
 
Ups, dass es PHP ist, habe ich vergessen.

Danke, das ist ja einfacher als ich gedacht hätte. :)


Viele Grüße!
 
ICH_BIN_LETZTER schrieb:
hi,

Code:
 SELECT max(id) FROM tabelle

gruß

Das wird ncht hinhauen, was passiert wenn zwischen deiner Abfrage und dem eigentlichen Insert ein weiteres Insert stattfindet? Dann hat der ältere Insert die ID von dem letzten Insert bekommen.
 
methical schrieb:
Das wird ncht hinhauen, was passiert wenn zwischen deiner Abfrage und dem eigentlichen Insert ein weiteres Insert stattfindet? Dann hat der ältere Insert die ID von dem letzten Insert bekommen.

Jupp, so ist es. Daher habe ich es auch nicht erst versucht. Eventuzell könnte man noch mit einem Zeitstempel arbeiten, aber es ist ja nicht mehr nötig.

Vacca
 
Hab ich nicht das geliche Problem auch mit der Funktion die php anbietet?
 
Nein, die Funktion schickt beim INSERT "sofort" die ID der geöffneten Verbindung zurück.

mysql_insert_id() liefert die ID, die bei der letzten INSERT-Operation für ein Feld vom Typ AUTO_INCREMENT vergeben wurde. Wenn die Verbindungs-Kennung nicht angegeben wird, wird die zuletzt geöffnete Verbindung angenommen.
 
"sofort" ist nicht ganz richtig. Aber diese Funktion ist *Session*-basiert. Damit schaffst du dir eine Art Mikrokosmos, Zugriffe von anderen Clients auf die Datenbank werden also von diese Funktion ignoriert.
 
Zurück
Oben