Hello,
Danke für deine Antwort. Das Problem ist, dass ich nach dem Eintragen den _gesamten_ Datensatz auslesen will, also nicht nur der Wert des auto_increment-Feldes. Ich denke das geht nur, indem man nach dem Eintragen wieder eine SELECT-Abfrage platziert. Das Problem ist: wie bekomme ich den zuletzt eingetragenen Eintrag einer Tabelle, deren Struktur völlig egal sein muss?
Wenn Dein Insert in die Tabelle gerade eben funktioniert hat, dann kennst Du den letzten Datensatz ja noch. Du solltest Vertrauen zu Deinem Programm haben ;-)
Wenn Du aber den zuletzt eingetragenen Datensatz von vor längerer Zeit haben willst, dann hilft Dir bei MySQL nur ein Timestamp, da der Auto-Increment-Wert angeblich nicht verlässlich hochzählt. Das wurde hier mehrfach diskutiert. Dies sollte, wenn man ihn tatsächlich als Autoincrement-Wert verwendet, und nicht vorgibt beim Insert, aber besser der Fall sein.
Vielleicht liegt dieses Manquo in Standard-SQL begründet? Ich weiß es leider nicht.
Um das so leidlich zu beheben, kannst Du einen Timestmp setzen. Da die Granularität aber eine Sekunde ist, ist das mMn noch unsicherer. Es können durchaus mal 100 Datensätze mit demselben Timestamp eingetragen worden sein, z.B. bei einer Select-from-<table>-Anweisung.
Ich persönlich würde immer einen Strict-Auto-Increment-Wert benutzen, um den letzen Datensatz zu ermitteln und habe bisher damit auch noch keine Probleme gehabt. Vielleicht ist das mit der Unbestimmtheit dieses Wertes auch nur ein Mythos? Das DBMS wäre dann ja schließlich unbrauchbarer Schrott!
Allerdings musst Du trotzdem beachten, dass zwischen dem Auslesen und dem Verwenden der Werte Zeit vergeht. Es ist also nicht richtig, die in einer nicht atomar gekapselten Operation wieder zu verwenden. Du müsstest also ggf. die bezogene Tabelle solange sperren, bis die Werte ausgelesen, verarbeitet und wieder weggeschrieben sind. Das ist ungünstig.
Hier wird vermutlich ein Subselect der bessere Wert sein, aber ich weiß nicht, ob das immer atomar gekapselt wird.
Um für Deine Aufgabenstellung also eine Lösung zu finden, ohne dass sie sich aufbläst zu einer unlösbaren, soltest Du also mal _genauestens_ beschreiben, was Du eigentlich erreichen willst.
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg