Sven Rautenberg: primärschlüssel "resetten"??

Beitrag lesen

Moin!

Und zwar: ich habe eine SQL tabele in der eien Spalte (id) mit Primarschlüssel und auto_increment versehen ist. Das Problem - wird eine Zeile (zB mit id 5) gelöscht und eine neue hinzugefügt kriegt die neue #6 , auto_increment zählt also weiter ob die vorherige zeile da ist oder nicht.

Die Frage - wie kann ich erreichen , daß die Zeilen eine "ordentliche" Nummerierung kriegen?

Nichts tun!

Eine ID dient ausschließlich der eindeutigen Identifizierung eines Datensatzes - nicht der Numerierung!

Würdest du nach dem Löschen des ersten Datensatzes mit ID 5 erneut einen Datensatz mit der ID 5 speichern können, wäre global betrachtet nicht klar, welcher der zwei existierenden Datensätze mit ID 5 denn nun gemeint sein könnte, wenn anderswo eine Referenz auf die ID 5 auftaucht.

Und behaupte nicht, dass es sowas nicht gibt. Angenommen, du hast zwei Browserfenster mit PHPMyAdmin offen. Das eine Fenster zeigt eine Auflistung deiner Datensätze, unter anderem auch den alten mit der ID 5.

Das zweite Fenster benutzt du nun, um ein wenig herumzuwurschteln, dann löschst du dort die ID 5, und legst einen neuen Datensatz mit ID 5 an.

Und dann gehst du zum alten Fenster, siehst: Ups, der Datensatz ID 5 ist ja falsch, der gehört gelöscht - klick... und schon ist dein neuer Datensatz im Orkus!

Entsprechend ausgeschmückte Geschichten gibts übrigens in diesem Forum sehr häufig, weil offenbar alle Datenbankanfänger auf die Idee kommen, die ID wäre sowas wie eine Datensatznumerierung, die bitte fortlaufend zu sein hat. "Siehe Archiv[tm]".

- Sven Rautenberg

--
"Love your nation - respect the others."