Sven Rautenberg: mysql: Den Primärschlüssel zurücksetzen

Beitrag lesen

Moin!

kommen wir zur Sache:
Ich habe in meiner Datenbank, die zwar in einer Produktionsumgebung benutzt wird, Testeinträge gemacht. Da ich diese inzwischen aber wieder gelöscht habe, sind unschöne "Löcher" entstanden.

Die per auto-increment hochgezählte Datensatz-ID dient nicht dazu, die Datensätze schön durchzunumerieren, sondern sie eindeutig zu identifizieren.

Aus diesem Grunde ändert sich die ID eines Datensatzes niemals, sobald er angelegt ist, weil in einer komplexeren Datenbank andere Tabellen auf diese ID verweisen. Wenn man das falsch ändert, gibt es ein Chaos.

Und auch Verweise außerhalb der Datenbank auf diese Datensatz-ID wären betroffen. Typisches Beispiel: Ersatzteilnummern. Wäre nicht schön, wenn der Kunde "567" bestellt und einen 12-Volt-Wippenschalter erwartet, aber von dir eine Flugzeugturbine erhält, nur weil du deine IDs umgestellt hast (umgekehrt wäre es natürlich genauso blöd).

Außerdem entstehen Lücken auch ganz ohne Testeinträge dadurch, dass irgendwann einmal Datensätze von ganz alleine gelöscht werden. Und diese Lücken schließt man auch nicht wieder.

Wie kann ich den Primärschlüssel so zurücksetzen, dass die Datensätze behalten werden, aber bei 1 beginnen und so enden, wie auch die Anzahl der Einträge ist?

Du läßt alles so, wie es ist. Das ist am besten.

- Sven Rautenberg

--
Die SelfHTML-Developer sagen Dankeschön für aktuell 21205,05 Euro Spendengelder!