ID des zuletzt eingefuegten Datensatzes

Hallo allerseits,

in meinem Perl-Programm schreibe ich mit $dbHandle->do(„INSERT …“) einen Datensatz in eine Tabelle einer MySQL-DB. Nun wüßte ich gern die ID dieses Datensatzen. Habs schon mit $dbHandle->insert_id und $dbHandle->last_insert_id probiert (hatte ich im Internet gelesen), aber das war es wohl nicht. Kann mir bitte jemand verraten, wie es richtig geht?

viele Dank schonmal für die Hilfe

Nicht gerade der Königsweg, aber vielleicht als Workaround für Dich nutzbar:

Mach doch mit den daten die Du zuletzt eingefügt hast einen SELECT, den Du nach der ID aufsteigend sortieren lässt und auf einen Datensatz limitierst.

Hi.

Mach doch mit den daten die Du zuletzt eingefügt hast einen
SELECT, den Du nach der ID aufsteigend sortieren lässt und auf
einen Datensatz limitierst.

Das klappt auch nur, so lange kein anderer in der Zwischenzeit
den gleichen Datensatz (falls erlaubt) eingefügt hat.

Falls dass sein Datenbankschema theoretisch zulässt, möchte ich
so ein System praktisch nicht debuggen müssen,
Stichwort „sporadischer Fehler“ :wink:

Gruß,
-Andreas.

Das klappt auch nur, so lange kein anderer in der Zwischenzeit
den gleichen Datensatz (falls erlaubt) eingefügt hat.

Daher habe ich ja gesagt, dass es nur als Workaround dienen kann.
Ich hätte noch dazuschreiben sollen, dass dieser Query direkt nach dem Einfügen passieren sollte.
Das schließt Probleme zwar nicht aus, aber verringert deren Wahrscheinlichkeit beträchtlich.

Ich hätte ja gerne den Königsweg aufgezeigt, aber dafür sind meine vergleichsweise geringen Perl-Kenntnisse zu eingerostet.

Die last_insert_id bezieht sich bei mySQL eindeutig auf Statement Handles! Wenn in der gleichen Zeit andere Datenbank-Operationen ausgeführt werden, ist das schnurz, man sollte halt nur drauf achten dass das gleiche Handle nicht mehrfach benutzt wird. In einem sub z.B. mit my $handle arbeiten.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]