de.comp.lang.php.* FAQ

16.16. Meine IDs haben Lücken - wie vergebe ich sie neu?

Antwort von Johannes Frömter

Die IDs einer AUTO_INCREMENT-Spalte haben den Sinn, jede Zeile in der Tabelle, d.h. jeden Datensatz, eindeutig zu kennzeichnen. Durch Löschen von Datensätzen entstehen zwar "Lücken" in der Nummerierung, da für neue Datensätze stets eine unverbrauchte ID vergeben wird. An dieser vermeintlichen "Unordnung" sollte man aber auf keinen Fall etwas ändern - dies würde dem Prinzip der Eindeutigkeit zuwiderlaufen.

Der höchste Wert der ID hat auch nichts mit der Anzahl der Datensätze in der Tabelle zu tun. Diese ermittelt man mit einer SQL-Funktion: SELECT COUNT(*) AS anzahl FROM tabelle

MySQL kennt (noch) keine referentielle Integrität, deshalb muss man selbst dafür sorgen, dass Verknüpfungen zwischen Tabellen (Primary/Foreign Keys) konsistent bleiben. Deshalb: Finger weg von den IDs! Bei geeigenter Wahl des Datentyps braucht man auch keine Sorge zu haben, dass Zahlenraum knapp werden könnte. Siehe auch: "Wie lege ich den Initialwert des auto_increment fest? Läuft dieser Wert über?".

Valid HTML 4.01! Valid CSS!

16.16. Meine IDs haben Lücken - wie vergebe ich sie neu?
http://www.php-faq.de/q/q-sql-ids.html
Archiv der de.comp.lang.php-FAQ Dies ist eine Archivseite von 2008 und wurde seitdem nicht geändert. Das dclp-FAQ-Team