[MYSQL] AutoInc-Wert in einer Tabelle zurücksetzen
-
1ntrud0r schrieb:
du erstellst die tabelle neu .. und trägst nochmal alle datensätze ein ..
Gibt es keine andere Möglichkeit?
-
ich glaub nicht. bzw ich hab noch keinen anderen Weg gefunden.
-
hm - das ist aber nicht so wirklich die beste Möglichkeit. Ich weiss, dass es bei MSSQL anders geht, aber ich weiss leider nicht [mehr] wie. Und eine Doku hab ich nicht zur Hand. Wenn ich das wüsste, dann würde ich das einfach mal bei MySQL ausprobieren.
-
User-Anmerkungen von http://www.mysql.com/doc/en/example-AUTO_INCREMENT.html :
For those that are looking to "reset" the auto_increment, say on a list that has had a few deletions and you want to renumber everything, you can do the following.
DROP the field you are auto_incrementing.
ALTER the table to ADD the field again with the same attributes.You will notice that all existing rows are renumbered and the next auto_increment number will be equal to the row count plus 1.
(Keep in mind that DROPping that column will remove all existing data, so if you have exterior resources that rely on that data, or the numbers that are already there, you may break the link. Also, as with any major structure change, it's a good idea to backup your table BEFORE you make the change.)
In order to reset the auto_increment, in a situation where some of the most recently added rows were deleted, use:
ALTER TABLE theTableInQuestion AUTO_INCREMENT=1234
and future insertions will be numbered from 1234 again (unless you still had rows numbered greater than 1234, and then the future insertions will start from the greatest number + 1 ).
-
Danke.
Die 2. Lösung gefällt mir dabei am Besten.
[edit]
hab das grad mal ausprobiert
funktioniert nicht
[/edit]
-
Also bei mir funktioniert beides - evtl. ist deine MySQL-Version zu alt
unless you still had rows numbered greater than 1234, and then the future insertions will start from the greatest number + 1
Das hast du aber berücksichtigt? Also in der Mitte etwas rauslöschen und dann AUTO_INCREMENT neu setzten bewirkt natürlich nichts
-
Meins ist halt die langsamste und die portablste Lösung ..
Funktioniert in allen Datenbanksystemen mit autoinc feld
-
Ich hab nur die 2.Möglichkeit probiert. phpMyadmin zeigt in der Ansicht den nächsten Autoinc-Wert an.
AutoInc-Wert ist 8 und ich habe die letzten 6 Datensätze gelöscht. Wenn ich jetzt das ausführe, dann passiert überhaupt gar nichts. Wenn ich dann einen neuen Datensatz einfüge, habe ich eine Lücke von 6 in dem Id-Feld.flenders schrieb:
evtl. ist deine MySQL-Version zu alt
Verbunden mit MySQL 4.0.14-max-debug auf localhost
Glaube nicht dass das zu alt ist, oder?
-
Jacques schrieb:
Ich hab nur die 2.Möglichkeit probiert. phpMyadmin zeigt in der Ansicht den nächsten Autoinc-Wert an.
AutoInc-Wert ist 8 und ich habe die letzten 6 Datensätze gelöscht. Wenn ich jetzt das ausführe, dann passiert überhaupt gar nichts. Wenn ich dann einen neuen Datensatz einfüge, habe ich eine Lücke von 6 in dem Id-Feld.Blöde Frage, aber du hast schon theTableInQuestion durch den Namen deiner Tabelle ersetzt?!
Verbunden mit MySQL 4.0.14-max-debug auf localhost
Ich hab bei mir MySQL 4.0.14-nt laufen - also daran sollte es nicht liegen
-
flenders schrieb:
Blöde Frage, aber du hast schon theTableInQuestion durch den Namen deiner Tabelle ersetzt?!
OOOOHH muss ich das ersetzen??
*lol* natürlich hab ich das ersetzt. Hab 6 Jahre mit Delphi auf MSSQL zugegriffen. Also Querys schreiben und Syntax-Lesen kann ich.
Hab auch mit Delphi ein Tool geschrieben, mit dem ich über ODBC auf MySQL zugreife und mir die Datenbankstruktur anzeigen/ausdrucken lassen kann sowie SQL-Befehle ausführen kann. Dort bekomme ich übriegens eine Fehlermeldung, mit der ich aber nichts anfangen kann:
hm - wollte grad die Fehlermeldung noch mal erzeugen. Ging leider nicht, weil er diesmal die Query ohne murren ausgeführt hat. Keine Ahnung warum. Vielleicht hatte ich tatsächlich einen schreibfehler in der Query. - nee, kann ja nicht sein, weil dann sagt er mir, dass es die Tabelle nicht gibt. Vorhin hatte ich aber sowas in der Richtung, dass er autoincrement nicht kennen würde.
Na egal, jetzt geht es jedenfalls. Warum auch immer es vorhin nicht ging.