16.16. Meine IDs haben Lücken - wie vergebe ich sie neu?Antwort von Johannes FrömterDie 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?". |
||
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 |