Ermitteln vom nächsten AutoIndex Wert einer MySQL Tabelle mit auto_increment Feldern

25. Januar 2011  |  Kommentar schreiben   |  Tags: , , ,



Bei Facebook teilen

Wie wir schon bei unserem letzten sich über MySQL beziehenden Artikel MySQL – nächster AutoIndex zurücksetzen/resetten erläutert haben, ist der AutoIndex ganz wichtig wenn man oft Datensätzen einfügt und dann wieder löscht, denn MySQL lässt keine Werte in auto_increment Felder wieder vorkommen, es sei denn man setzt den AutoIndex-Wert auf den kleinstmöglichen Wert zurück. Der minimale Wert kann ja in der Regel die größte momentan vergebene auto_increment ID + 1. Die Lösung die wir hier in diesem Artikel betrachten werden, bezieht sich darauf wie man den nächsten zu vergebenden auto_increment Wert abrufen kann.

Problemstellung

Wir sind über das Problem gestolpert, als es für uns wichtig wurde, die IDs von Datensätzen vor dem Einfügen zu ermitteln. Dies könnte dazu dienen, beispielsweise in einer Buchhaltungsroutine, eingegebene Kassenbelege mit IDs in einer Datenbank zu verknüpfen, um später Kassenbestände eindeutig identifizieren zu können, insbesondere wenn man die Kasse elektronisch aufführen möchte. Hierzu kommt MySQL mit einer Abfrage zur Hilfe.

Lösung

Um den nächsten AutoIndex Wert zu bekommen, müsste man folgende Abfrage ausführen:

SHOW TABLE STATUS LIKE `IhreTabelle`

Zurückgegeben von MySQL (natürlich bei existierender mit diesem Namen Tabelle) wird eine Zeile mit vielen Werten, die unter anderem Kollation, Kodierung, Datum der letzten Änderung und sonstige beinhaltet. Was wir hier auslesen müssen ist der Wert in der Spalte Auto_increment, die unseren Wert beinhaltet. Diesen können Sie beispielsweise mit PHP einfach auslesen. Wenn Sie da nicht selber weiterkommen, so können Sie sich mit uns in Verbindung setzen.use-web

Problematik

Natürlich gibt es verschiedene Punkte, die man berücksichtigen muss:

  • Häufige Tabellennutzung – falls die Tabelle, wo Sie Ihre Datensätze einfügen von mehreren (beispielsweise Buchhaltern) benutzt wird, so kann es sein, dass sich der nächste AutoIndex ändert nachdem Sie die Ausgabe von der obigen Abfrage sehen und bevor Sie auf Speichern klicken, denn diese ID könnte jemandem anders schon vergeben worden sein.
  • Syntax der Abfrage – vergessen Sie nie den Tabellennamen in den Apostrophen zu umfassen – ` … `, denn ansonsten wird ein Tabellennamen mit Bindestrich nicht angenommen
  • Unnötiggröße Werte – vergessen Sie nie den AutoIndex zurückzusetzten immer, wenn Sie eine Gelegenheit haben, um nicht eine Felddefinitionsgrenze nicht zu erreichen. Dies haben haben wir in unserem anderen Artikel beschrieben.

 Bei Fragen stehen wir Ihnen jederzeit zur Verfügung. Viel Spass und beachten Sie bitte unsere anderen MySQL Artikel!

Teilen

Hinterlasse eine Antwort

Du musst angemeldet sein, um einen Kommentar abzugeben.