gorgel Geschrieben 14. Juni 2010 Geschrieben 14. Juni 2010 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 Zitieren
truebsalgeblaese Geschrieben 14. Juni 2010 Geschrieben 14. Juni 2010 Hallo gorgel, könntest Du noch etwas mehr Infos (Datenbankmanagementsystem, Programmiersprache, ...) geben, sonst ist das nicht nachvollziehbar... tsg Zitieren
lupo49 Geschrieben 14. Juni 2010 Geschrieben 14. Juni 2010 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. Zitieren
gorgel Geschrieben 14. Juni 2010 Autor Geschrieben 14. Juni 2010 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! Zitieren
Klotzkopp Geschrieben 14. Juni 2010 Geschrieben 14. Juni 2010 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. Zitieren
gorgel Geschrieben 14. Juni 2010 Autor Geschrieben 14. Juni 2010 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! Zitieren
smash Geschrieben 14. Juni 2010 Geschrieben 14. Juni 2010 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? Zitieren
Empfohlene Beiträge
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.