DB-Tabelle Sortieren
Frank_
- datenbank
Hallo,
ich würde gerne meine Datenbanktabelle (MySQL), die ein paar gelöschte Einträge enthält, gerne so sortieren, dass die IDs (auto increment, Primärschlüssel), geordnet werden, wieder bei 1 beginnen und z.B. keine Lücken drin sind.
Ich habe PhpMyAdmin, weiß aber nicht, wie das geht. Könnt Ihr mir helfen?
Vielen Dank!
PS: Noch mal zur Verdeutlichung
Jetzt: 3,4,5,8,9
Soll: 1,2,3,4,5
Hallo,
ich würde gerne meine Datenbanktabelle (MySQL), die ein paar gelöschte Einträge enthält, gerne so sortieren, dass die IDs (auto increment, Primärschlüssel), geordnet werden, wieder bei 1 beginnen und z.B. keine Lücken drin sind.
Warum?
Eine ID ist ein eindeutiges Idenfikationsmerkmal, es darf sich per Definition niemals ändern.
Wenn sich ID dennoch ohne Konseqenzen ändern kann, ist sie von vorne herein überflüssig.
Wenn du dennoch dein vorhanden umsetzen willst - MySQL unterstützt auch Variablen und Zähler.
Etwa so (nicht getestet):
@counter := 1;
UPDATE
table
SET
id = @counter := @counter + 1
ORDER BY
id
table
Table ist ein reservierter Begriff :p
Natürlich musst den auto_increment-Zähler danach wieder "zurücksetzen" bzw. korrekt einstellen.
Danke schon einmal für die Antworten.
Das Problem ist, dass ich in der neuen Tabelle 33 Einträge angelegt habe. Dann habe ich gepfuscht, musste einige Einträge löschen und das Prozedere startet jetzt immer bei ID=42. Ich würde aber gerne wueder bei 34 starten, allein weil's schöner ist. Bitte habt Verständnis für einen Ordnungsfreak und nennt mir eine Lösung :-) (hoffe ich habt den schmunzelnden Unterton "gelesen":)
Gruß und danke!
Hi!
Ich würde aber gerne wueder bei 34 starten, allein weil's schöner ist.
Den aktuellen auto_increment-Wert kann man im phpMyAdmin in der Lasche Operationen der betroffenen Tabelle ändern. Dabei wird ein ALTER-TABLE-Statement ausgeführt.
Lo!
Ich bedanke mich vielmals!
Hallo,
Das Problem ist, dass ich in der neuen Tabelle 33 Einträge angelegt habe. Dann habe ich gepfuscht, musste einige Einträge löschen und das Prozedere startet jetzt immer bei ID=42.
das ist doch nicht schlimm. Ich würd's so lassen.
Ich würde aber gerne wueder bei 34 starten, allein weil's schöner ist.
ALTER TABLE hilft Dir:
-- Setze den Wert des Autoincrementzählers zurück.
-- Beachte: Der Wert sollte größer sein als der größte derzeit in der
-- Tabelle vorhandene Wert. Die Engines MyISAM und InnoDB haben
-- unterschiedliches Verhalten, wenn der Wert nicht größer ist.
ALTER TABLE
tabelle -- hier der Name Deiner Tabelle
AUTO_INCREMENT = 34
Freundliche Grüße
Vinzenz
Hallo,
ich würde gerne meine Datenbanktabelle (MySQL), die ein paar gelöschte Einträge enthält, gerne so sortieren, dass die IDs (auto increment, Primärschlüssel), geordnet werden, wieder bei 1 beginnen und z.B. keine Lücken drin sind.
Das ist keine gute Idee. Warum möchtest Du das tun?
Es ist völlig normal und gar kein Problem, dass bei Autoincrement-Werten Lücken entstehen. Eine ID wird dafür verwendet, um einen Datensatz zu _id_entifizieren.
Freundliche Grüße
Vinzenz