autoincrement-Wert auslesen
wuscheck
- datenbank
Hallo Forumler,
ich kämpfe derzeit mit dem Problem, dass ich den aktuellen autoincrement-Wert brauche, um danach einen INSERT in eine andere Datenbank zu machen.
Der Befehl select last_insert_id() funktioniert anscheinend ja nur, wenn man direkt davor einen INSERT ausgeführt hat. Ein einfaches Auslesen der letzten DB-ID nutzt auch nichts, da evt. bereits IDs gelöscht wurden.
Any ideas?
Gruss
wuscheck
ich kämpfe derzeit mit dem Problem, dass ich den aktuellen autoincrement-Wert brauche, um danach einen INSERT in eine andere Datenbank zu machen.
wieso das denn?
Der autoincrement Wert wird doch von der DB automatisch errechnet den musst du nicht eintragen.
Struppi.
Hallo
ich kämpfe derzeit mit dem Problem, dass ich den aktuellen autoincrement-Wert brauche, um danach einen INSERT in eine andere Datenbank zu machen.
wieso das denn?
Der autoincrement Wert wird doch von der DB automatisch errechnet den musst du nicht eintragen.
Ich vermute mal, wuscheck will nach dem Eintrag eines Datensatzes einen weiteren Datensatz erzeugen, der mit dem ersten (per ID) verknüpft ist. Wenn es denn MySQL sein sollte, wäre mysql_insert_id die richtige Funktion.
Tschö, Auge
Ich vermute mal, wuscheck will nach dem Eintrag eines Datensatzes einen weiteren Datensatz erzeugen, der mit dem ersten (per ID) verknüpft ist. Wenn es denn MySQL sein sollte, wäre mysql_insert_id die richtige Funktion.
Richtig, allerdings muss doch davor zwingend ein INSERT erfolgen und das ist bei mir nicht der Fall, weil der INSERT zeitmässig unabhängig davon erfolgte... gibt es wirklich keine andere Möglichkeit?
Hallo
Ich vermute mal, wuscheck will nach dem Eintrag eines Datensatzes einen weiteren Datensatz erzeugen, der mit dem ersten (per ID) verknüpft ist. Wenn es denn MySQL sein sollte, wäre mysql_insert_id die richtige Funktion.
Richtig, allerdings muss doch davor zwingend ein INSERT erfolgen und das ist bei mir nicht der Fall, weil der INSERT zeitmässig unabhängig davon erfolgte... gibt es wirklich keine andere Möglichkeit?
Du legst also Daten(1) in einer Tabelle ab, _irgendwann_ nachdem der Datensatz(2), auf den sich die neuen Daten(1) beziehen, erstellt wurde?
Dann identifiziere den Datensatz(2) und lasse dir die dazugehörige ID ausgeben um damit die neuen Daten(1) einzutragen.
Tschö, Auge
Richtig, allerdings muss doch davor zwingend ein INSERT erfolgen und das ist bei mir nicht der Fall, weil der INSERT zeitmässig unabhängig davon erfolgte... gibt es wirklich keine andere Möglichkeit?
Das klingt nach einem sehr unsicheren Konstrukt, ein Option wäre evtl MAX(id), aber ob das wirklich immer 100% das Ergebniss der nächfolgenden ID ist weiß ich nicht.
Struppi.
echo $begrüßung;
Das klingt nach einem sehr unsicheren Konstrukt, ein Option wäre evtl MAX(id), aber ob das wirklich immer 100% das Ergebniss der nächfolgenden ID ist weiß ich nicht.
Auf keinen Fall ist das hundertprozentig sicher. Zwischen dem Eintragen des Datensatzes und dem MAX(id) können in anderen Sitzungen bereits weitere Datensätze hinzugefügt worden sein. Das einzig sichere Mittel ist, die LAST_INSERT_ID() zu ermitteln bevor ein weiterer INSERT/UPDATE in der selben Sitzung erfolgt. (Siehe auch: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#id3084075
echo "$verabschiedung $name";
Das klingt nach einem sehr unsicheren Konstrukt, ein Option wäre evtl MAX(id), aber ob das wirklich immer 100% das Ergebniss der nächfolgenden ID ist weiß ich nicht.
Auf keinen Fall ist das hundertprozentig sicher. Zwischen dem Eintragen des Datensatzes und dem MAX(id) können in anderen Sitzungen bereits weitere Datensätze hinzugefügt worden sein. Das einzig sichere Mittel ist, die LAST_INSERT_ID() zu ermitteln bevor ein weiterer INSERT/UPDATE in der selben Sitzung erfolgt. (Siehe auch: http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#id3084075
Danke.
Da lese ich noch ein paar weitere Fallstricke, ich wußte z.b. nicht das wenn man mehrere Datensätze einfügt so gar nicht an die last_inser_id() kommt.
Ich denke mal, der OP sollte sich genau übverlegen was er wirklich ermitteln will und aus welchem Grund. So kommt er zu keinem Ergebniss.
Struppi.