4.2. Wie kann ich die AUTO_INCREMENT-Nummer des nächsten Datensatzes ermitteln?

Da MySQL ein mehrbenutzerfähiges Datenbanksystem ist, kann nicht mit Sicherheit gesagt werden, welche Nummer in einem mit AUTO_INCREMENT versehenen Feld ein einzufügender Datensatz erhalten wird. In der Zeit zwischen dem Bestimmen der bisher höchsten Nummer und dem Einfügen des neuen Datensatzes kann bereits an anderer Datensatz eingefügt worden sein, der die zuvor ermittelte Nummer zugeteilt bekommen hat.

Um trotzdem vor dem Einfügen eines Datensatzes dessen ID bereits ermitteln zu können, lässt sich der folgende Trick verwenden. Die ID-Spalte der interessanten Tabelle wird nicht mit dem Attribut AUTO_INCREMENT versehen. Stattdessen wird eine zweite Tabelle angelegt, die nur die Aufgabe hat, per AUTO_INCREMENT eine Folge von Zahlen zu liefern. In diese zweite Tabelle wird nun vor dem Einfügen des eigentlichen Datensatzes in die erste Tabelle ein Dummy-Eintrag vorgenommen, der im ID-Feld dieser Tabelle die nächste verfügbare Zahl zugeteilt bekommt. Diese lässt sich nun per LAST_INSERT_ID() auslesen. Mit dieser auf diese Art gewonnen ID wird nun der eigentliche Datensatz in die erste Tabelle eingefügt.

Achtung

Zu beachten bei diesem Verfahren ist allerdings, dass auf keinem anderen Weg Datensätze in die erste Tabelle eingefügt werden dürfen. Geschieht dies doch, so erhät der eingefügte Datensatz womöglich keine oder eine bereits vorhandene ID, oder eine solche, die später durch das eben beschriebene Verfahren aus der zweiten Tabelle gewonnen werden wird.