Gelöschte ID in der Datenbank wieder vergeben.

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Abend zusammen,


    ich habe eine Frage bezüglich der ID in der Datenbank.
    In MySQL habe ich mir eine Tabelle angelegt, darin möchte ich mehrere Dinge speichern, deshalb habe ich mir eine Spalte mit dem Namen 'id' erstellt.
    Dieser Spalte habe ich dann ein 'AUTO_INCREMENT' zugelegt, sprich bei jedem neuen Eintrag wird diese Spalte durch Nummeriert, dies sollte dann so aussehen:



    id wert0 wert1 wert2
    1 ... ... ...
    2 ... ... ...
    3 ... ... ...



    Wenn ich nun Beispielsweise die ID 2 lösche, und erstelle einen neuen Eintrag dann geht es bei 4 weiter.
    Nun zu meiner Frage, gibt es eine Möglichkeit das es in diesem Fall nicht bei 4 sondern bei der davor gelöschten 2 weitergeht? So das die Tabelle immer der Reihe nach verläuft?


    Ich hoffe es kann mir jemand die passende Antwort geben :)


    Mit freundlichen Grüßen
    German_ScripterHD

  • Wie mein Vorposter bereits sagte, out of the box nicht. Man kann das natürlich implementieren, doch welchen Vorteil zieht man daraus?


    Wenn du befürchtest gegen die Grenzen des Wertebereichs zu wachsen, dann nimm lieber direkt einen größeren Datentyp. Wenn selbst der nicht mehr reicht weil du zwischendrin Lücken hast, dann ist entweder was an deinem DB Schema faul oder du würdest ohnehin von NoSQL Systemen profitieren.

  • Du kannst über die MySQL DB Befehle wie "alter" das AI zurücksetzen, jedoch kommt es dann vielleicht zu fehlern, da noch ältere Werte existieren.
    Der beste Weg würde hier wohl sein, indem du die Datenbank exportierst (ohne die Werte der ID) und wieder mit AI importierst


    Sollte aber eig egal sein, da die Daten bei dir sonst jedes mal inkonsistent werden. Man sollte die ID wirklich nur als Identifikatior nutzen, nicht, um noch etwaige Dinge zu machen. Ob der User nun die ID 5 oder die ID 27492 hat, ist letzt endlich egal. Hauptsache er existiert, und das am besten nur einmal in der Datenbank. Ich denke nicht, dass du so viele Spieler oder Daten haben wirst, dass du mit einem normalen Integer (11) nicht auskommst ^^


    Wenn du die Nummern als Aufzählung haben willst, packe alles in einen Array und frage die Position ab oder nutze Aggregatfunktionen u.ä. von MySQL