User since
2011-03-19
3472
Artikel
BenutzerIn
Engine ist MySQL 5.*
Es gibt zwei Möglichkeiten, einmal die MySQL-eigene Funktion, oder die Methode $dbh->last_insert_id.
Zu beiden Varianten steht in der Doku, dass das Statement vorher erfolgreich gewesen sein muss, ok, ich verpacke das Statement und die last_insert_id-Abfrage in eval{} mit RaiseError => 1 und prüfe auf Exception.
Meine Frage ist die: Ist das dann zusammen atomar? Immerhin ist MySQL->LAST_INSERT_ID eine globale Abfrage und auf der DB ist ne ganze Menge los (um das mal so zu sagen); es gibt da noch andere, möglicherweise zeitgleiche Prozesse, die INSERTs mit auto_increment machen auf andere Tabellen.
Vermutlich ist die DBI-Methode $dbh->last_insert_id sicherer(atomar), weil ($catalog, $schema, $table, $field) angegeben ist?
Bitte mal um Hilfestellung,
Rolf