Sven Rautenberg: Hier ist meine Beispielseite (anschauen)

Beitrag lesen

Moin!

Außerdem empfiehlt sich in Multiuser-Umgebungen, dem Datensatz einen Konflikt-Zähler zu verpassen. Wenn der User nun die Daten holt, wird dieser Zähler mit der ID zusammen in der Session eingetragen.

So ein "Konfliktcounter" existiert in MySQL in Form des TIMESTAMPs schon. Das vorderste TIMESTAMP-Feld wird bei Updates ja automatisch auf die aktuelle Zeit gesetzt. Wenn man sich also den gespeicherten Timestamp zum Zeitpunkt des Datensatzlesens merkt und beim Schreibversuch prüft, ob der Datensatz noch immer den gleichen Timestamp hat (am simpelsten, indem man das Timestamp-Feld inkl. der erforderlichen alten Zeit mit in die WHERE-Bedingung reinsetzt und dann die "affected rows" abfragt), dann wurde der Datensatz in der Zwischenzeit nicht verändert.

Andernfalls muß man sich was überlegen. :)

Oder hätte dein conflictcounter noch weitere Aufgaben?

  • Sven Rautenberg