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?
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]