SQL Befehl - Nummerierung

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Hello there,

bevor du was kaputt machst...von

TRUNCATE tabelle 

würd ich mal ganz schnell die Finger lassen, sonst ist deine Tabelle leer. Ich würde erstmal die Tabelle die du fixen willst vorsichtshalber dennoch mal sichern und dann machste einfach folgendes:

ALTER TABLE `deinetabelle`
DROP `primaerid`,
ADD COLUMN  `neue_id` INT NOT NULL AUTO_INCREMENT,
ADD PRIMARY KEY (`neue_id`);

Fertig :). MySQL nummeriert dann einfach alle bisher vorhandenen Einträge wieder von 1-n durch. Aber halt in der Reihenfolge, in der sie bisher in der Datenbank drin waren. Sie sind bei dir ja nur falsch nummeriert aber nicht falsch sortiert oder? Übrigens, auch wenn jeder gerne durchgehende Nummerierung hat, aber es ist nicht unüblich, dass manche IDs auch gar nicht vorkommen. Kann ja immer mal passieren, dass du einen rauslöschen oder überschreiben musst. Dafür hast du ja die Primärschlüssel, damit du hier flexibel bist :)

ACHTUNG!!!!!!!!

Wenn du dich noch im Entwicklungsmodus befindest, kannste sowas machen. Aber führe obigen Befehl NIEMALS auf nem Livesystem aus, sonst schrottest du alles, mit der einfachen Begründung, dass dann jeder Datensatz plötzlich ne neue ID hat und dann möglicherweise andere Referenzen nicht mehr zusammenpassen. Das wäre wie wenn du auf Facebook plötzlich ne neue User-ID hättest und dann jemand anderes wärst :).

Hoffe ich konnte dir helfen, dann würde ich mich über nen Stern freuen.

MfG

Alex

Mit der Vergabe einer Nummer legst Du eine Identität fest, die bei einer Neunummerierung zerstört wird. Wenn Du jemals erfolgreich mit Datenbanken arbeiten möchtest, vergiss diesen Unsinn. Es ist eine weitverbreitete aber falsch verstandene Ordnungsliebe Lücken in der Nummerierung als Schönheitsfehler zu betrachten und diese eliminieren zu wollen.

Das bedeutet nicht, dass es keine sinnvolle Gründe dafür geben könne. Man muss aber wirklich was von Nummerierung und Bezeichnung verstehen, um das zu beurteilen und ohne Schaden durchzuführen.

Auch eine Bank vergibt mitunter neue Konto-Nrn. Bei größeren Umstellungen, z.B. wegen Einführung einer Prüfzffer. Bei Straßen-Nrn etwa macht man aus der Nr 15 lieber 15a und 15b, wenn das Grundstück geteilt wird statt die ganze Straße neu zu nummerieren.

Für Dich ist es wichtig, das Problem einer Neunummerierung und die Bedeutung von Nummern schlechthin wirklich zu verstehen

EinfachDerBabo 
Fragesteller
 13.10.2014, 17:22

Nein. Mit der Nummer vergebe ich nicht die Identität. Dafür habe ich eine extra Zahl. Die heiß in meiner Tabelle PUID. Diese ID war nur da um den Platz für den Eintrag zu suchen. Und mein Problem war, dass wenn ein Eintrag eine 7-stellige Zahl bekommt, das Spiel überfordert ist. Mfg

0

Einfach die vorhandene Primary-Key-Spalte löschen und eine neue in folgender Weise hinzufügen:

ALTER TABLE name ADD id INT NOT NULL AUTO_INCREMENT PRIMARY KEY;

Die bereits vorhandenen Datensätze werden dann automatisch durchnummeriert.

Sind es normale Spalten oder liegt auf der Nummerierung der Primary Key?