Tom: MySQL: arbeiten mit Limit

Beitrag lesen

Hello,

Du meinst "unique"? :)

Gut, unäres Feld mit eineindeutigem Schlüssel, bzw. der Schlüssel ist gerade nicht mehr primär.

Gegen das Nichtanzeigen gelöschter Datensätze hilft, sie nicht wirklich mit DELETE zu löschen, sondern nur als "gelöscht" zu kennzeichnen. Dann haben sie natürlich wieder ein Timestamp, welches aktualisiert wird.

Das muss ich mir sowieso noch überlegen, ob das nicht aus rechtlichen Gründen demnächst vorgeschrieben ist. Aber eine vollständige Historie kann man nicht speichern. Bis ein User mit dem Inhalt seiner Seite zufrieden ist, wird die oft 20-30mal geändert.

Aber gegen geänderte Datensätze hilft absolut nichts.

Doch, die haben dann ja einen neunen Timestamp in der Liste "letzte Veränderungen"

Mal angenommen, du listest 10 Datensätze pro Seite und hast insgesamt 14 Datensätze. Du zeigst Seite 1 an. Alles ist wunderbar. Dann werden 4 Datensätze dieser Seite geändert. Dann blätterst du auf Seite 2. Dort kriegst du exakt die 4 geänderten Datensätze gezeigt. Die 4 Sätze, die vorher dort gewesen waren, sind aufgrund deiner Timestamp-Sortierung auf Seite 1 gewandert, wurden also nie angezeigt.

Nein, die sind ja noch nicht angezeigt worden, also liegen sie im Query noch über dem Aufsetzpunkt (Timestamp + ID). Wenn ich stur Offset und Limit benutzen würde, dann hättest Du (glaube ich) Recht.
Das ist ja genau das Thema, dass wir schon einmal hatten. Irgendwann wird doch noch ein Featureartikel daraus: "Strukturiertes Arbeiten in dynamischen Datenbeständen" Unterkapitel: "Blättern"

Wie willst du verhindern, dass sowas passiert? Wenn du hierfür eine schlüssige, funktionierende Lösung anbieten kannst, dann bist du wirklich gut. Mir ist für dieses Problem nämlich nur die Ausweichlösung eingefallen, es gar nicht erst zu einem Problem werden zu lassen, sondern eben zu akzeptieren, dass bei einem Client-Server/Client-Server-System, wie es von Browser-PHP-MySQL dargestellt wird, unmöglich ist, Aktualisierungen in der Datenbank sofort zum Anzeigeclient zu senden, damit dieser reagieren und die Anzeige aktualisieren kann.

Ich denke schon sehr lange über solche Probleme nach und habe auch schon die verschiedensten Lösungen entwickelt (und verkauft) aber eben noch nicht für "Internettechnologie". Das Problem hier ist, dass kein Messaging (Serverpush) über den Netzwerksocket des Clients möglich ist.

Tja, falsche Datenbank für diese Anforderung, würde ich sagen.

Da magst Du auch wieder recht haben. Ich vergleiche immer gerne mit den Möglichkeiten von Informix. Aber das wollen dann eben viele Kunden nicht einkaufen.

Grüße

Tom