Scooter: auto_increment ID zurücksetzen

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!

  1. 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

    --
    RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
    Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
    1. Du musst Ihn nicht mal zwingend löschen. Es reicht schon aus, wenn Du den Autoincrement neu setzt. mit einem update.

      Gruss Matze

      1. 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

        --
        RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
        Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
        1. 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

          1. 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

            --
            RTFM! - Foren steigern das Aufkommen von Redundanz im Internet, danke für das lesen der Manuals.
            Selbstbedienung! - Das SelfForum ist ein Gratis-Restaurant mit Selbstbedienung, Menüangebot steht in den </faq/> und dem </archiv/>.
            1. 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

            2. 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

  2. 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