Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich bin Hobbyprogrammierer und mache mich gerade an eine datenbankgestützte Webseite.

Dabei habe ich eine Seite, die alle Elemente einer DB-Tabelle sortiert nach ID ausgibt. Das ID-Feld ist autoincrement.

Mein Problem ist, dass, wenn man über die Webseite ein Element löscht und anschließend ein neues hinzufügt, dieses Element die ID des vorher gelöschten bekommt, also nicht hinten angehängt wird.

Das ist eigentlich logisch, ist für den Benutzer aber eher gewöhnungsbedürftig, da er sein neu erstelltes Element in einer Liste von vielen suchen müsste.

Gibt es für das Problem eine gängige Abhilfe?

Alle Elemente per Update ändern, falls eins gelöscht wurde, halte ich für nicht praktikabel.

MfG

gorgel

Geschrieben

Bei MySQL ist es so, dass der auto_increment-Wert immer inkrementiert wird und nicht mehr einen Wert unter dem jetzigen Wert annehmen kann.

Wenn ich bei mir drei Datensätze mit "ID" als auto_increment erzeuge, dann werden in die Spalte "ID" die Werte 1, 2, 3 gepackt. Wird jetzt bspw. der zweite Datensatz gelöscht, wird trotzdem beim nächsten Einfügen eine 4 in die ID-Spalte geschrieben.

Geschrieben

Tatsächlich? Also ich bastel an einer JSF-Seite mit MySQL-Datenbank. Dann verstehe ich nicht, wonach die Seite sortiert.

Die entsprechende Tabelle ist ganz simpel aufgebaut:

1. ID auto_increment

2. Text

Per JPA hole ich mir alle vorhandenen Texte aus der Tabelle. Komischerweise, wie gesagt, ersetzt ein neu erstellter Text immer den vorher gelöschten Platz.

Aber wenn dies eigentlich nicht der Fall ist, liegt es wohl an meinen bescheidenen JPA-Künsten. Ich werde nochmal drüberschauen.

Danke für eure Antworten bis hierhin!

Geschrieben

Wenn du die Datensätze in einer bestimmten Reihenfolge haben willst, dann musst du dafür sorgen, dass die Datensätze ein Feld haben, das bei Sortierung eben diese Reihenfolge erzeugt.

Keinesfalls solltest du dich darauf verlassen, dass dir die Datenbank die Datensätze in der Reihenfolge der Erzeugung liefert, oder das ID-Feld für die Sortierung benutzen.

Geschrieben

Ok, dann erstelle ich einfach ein weitere INT-Feld, das immer den Wert des höchsten vorhandenen Wertes + 1 bekommt, sobald ein neues Element hinzugefügt wird. Bzw. wenn kein Wert vorhanden ist, den Wert 0 verwendet.

Danke, so sollte es gehen!

Geschrieben
Keinesfalls solltest du dich darauf verlassen, dass dir die Datenbank die Datensätze in der Reihenfolge der Erzeugung liefert, oder das ID-Feld für die Sortierung benutzen.

Hm. Wieso dass nicht? Gibt es da denn so krasse Unterschiede? Funktioniert das auto_increment nicht genau wie eine Sequenz mit Startwert 0?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...