auto_increment ID zurücksetzen
Scooter
- datenbank
Hi,
wie kann ich die auto_increment bei einer MySQL-Datenbank zurücksetzen?!
Habe mehrere Testinserts gemacht und bin jetzt mit meinem auto_increment entsprechend hoch. Nun habe ich alles gelöscht, aber der auto_increment fängt trotzdem nicht wieder bei 1 an.
Wie mach ich das, ohne die Tabelle zu droppen?!
Gruß
Scooter!
Halihallo Scooter
Habe mehrere Testinserts gemacht und bin jetzt mit meinem auto_increment entsprechend hoch. Nun habe ich alles gelöscht, aber der auto_increment fängt trotzdem nicht wieder bei 1 an.
DELETE FROM tabelle
ist die einzige Möglichkeit (neben DROP TABLE), den Wert auf 0 zurückzusetzen.
Viele Grüsse
Philipp
Du musst Ihn nicht mal zwingend löschen. Es reicht schon aus, wenn Du den Autoincrement neu setzt. mit einem update.
Gruss Matze
Halihallo Matze
Du musst Ihn nicht mal zwingend löschen.
Ihn? - Die ganze Tabelle wird gelöscht.
Es reicht schon aus, wenn Du den Autoincrement neu setzt. mit einem update.
Dann änderst du nicht den nächsten Autoincrement Wert, sondern den Primary Key des
Datensatzes; wenn ich Scooter jedoch richtig verstanden habe, möchte er den nächsten
Autoincrement-Wert wieder auf 0 haben.
Auch wenn man alle Datensätze von 0 aus neue ID's zuordnet, der nächste AutoIncrement
bleibt davon unbeirrt, denn dieser steht im TableHeader und wird nur durch INSERT's
modifiziert, ein DELETE FROM Table löscht die gesamte Tabelle und stellt den TableHeader
wieder her (dann jedoch mit nächstem AutoIncrement-Wert 0).
Viele Grüsse
Philipp
Also ich weiss ja nicht, welche Datenbank Du meinst.
Unter Oracle z.B. kannst Du den autoincrement Wert welcher seperat deklariert wird nach wunsch setzen. Unter MS SQL und Access geht das auch.
Dieser Wert wieder bei jedem insert eines nach oben gezählt.
Bei einem delete from wird nur dei Tabelle jedoch nicht der increment Wert gelöscht.
Sprich der nächste Datensatz hat dann eine Id mit z.B: 35 auch wenn die Tabelle zuvor durch delete gelöscht wurde.
Du kannst diesen Autoinvrement Wert Ändern, löschen oder wieder auf 0 zurücksetzen. Ob das jedoch eine Constraint Verletzung hervorruft durch existierende Datensätze mit eine gleichen Id is eine andere geschichte.
Gruss Matze
Halihallo Matze
Also ich weiss ja nicht, welche Datenbank Du meinst.
Stimmt, wurde bisher nicht gesagt. Das "autoincrement" liess mich auf MySQL glaskugeln.
Unter Oracle z.B. kannst Du den autoincrement Wert welcher seperat deklariert wird nach wunsch setzen. Unter MS SQL und Access geht das auch.
Heisst es dort auch autoincrement? - Dann Schande über mich für die voreilige Implikation
von MySQL.
Dieser Wert wieder bei jedem insert eines nach oben gezählt.
Bei einem delete from wird nur dei Tabelle jedoch nicht der increment Wert gelöscht.
Hm, OK, bei MySQL schon.
Du kannst diesen Autoinvrement Wert Ändern, löschen oder wieder auf 0 zurücksetzen. Ob das jedoch eine Constraint Verletzung hervorruft durch existierende Datensätze mit eine gleichen Id is eine andere geschichte.
Stimmt.
--
Meine Sicht war auf MySQL beschränkt, dafür möchte ich mich entschuldigen und schämen :-)
Viele Grüsse
Philipp
Meine Sicht war auf MySQL beschränkt, dafür möchte ich mich entschuldigen und schämen :-)
warum? es ging doch um MySQL!! *g*
Zitat: "wie kann ich die auto_increment bei einer MySQL-Datenbank zurücksetzen?!"
Gruß
annA
Servus,
soory ich muss meine info natürlich etwas vervollständigen.
Bei MS heisst es Autoincrement oder so ählich bei Oracle wird eine sogenante Sequence erzeugt.
Beim insert gehst Du dann wie folgt vor.
insert id values myseq.nextval()
Der SQL ist natürlich nicht richtig geschrieben aber ich hoffe Du kannst mir folgen.
mit myseq.nextval() greifst du auf den nächsten wert zu, welcher zum vorherigen um eines oder je nach definition hochgezählt wurde.
Du kannst den Sequenzen ach angeben ob in 1 er 10 usw. Schritten hochgezählt wird.
Diese Automatische eintragen der Id welche druch Sequenzen bzw. (autoicrement) Elemtene erzeugt werden, realisert man meisten gleich mit einem insert trigger, damit man sich nicht mehr geziehlt um das erstellen einer Id später kümmern muss.
Bei MS SQL und co läuft das so ähnlich, zwar wird der Tabelle selbt der Typ autoincrement mitgegen, jedoch ist der wert des increment nicht in der Tabelle sondern ebenfalls in einer soenannten Sequenz hinterlegt. Ms SQL macht das im hintegrund.
Der Wert kann ebenfals zurückgesetzt werden. Du muss nur die Sequenz finden und dieser per SQL entsprehcend bearbeiteten.
Ich dachte, dass es mit anderen Datenbanken nicht viel anderster geht.
Gruss matze
Hi,
dank euch. Geht wohl wirklich nur über ein "Leeren" der Tabelle.
Hatte die Einträge jeweils durch eine WhERE bedinung gelöscht, bis keine mehr da waren.
Dann gings nicht mit dem autoincrement reset
Scooter