mySQL locking table / record - Problem mit MS Access
bearbeitet von Rolf BHallo Linuchs,
was Du suchst, heißt "optimistisches Sperren". Dafür brauchst Du in den Sätzen, die Du ändern willst, einen "Last Update" Timestamp. Bei jedem Update änderst Du den.
Beim Einlesen:
~~~sql
SELECT a, b, c, lastupdate
FROM somedata
WHERE id=:idValue
~~~
Beim Update
~~~sql
UPDATE somedata
SET a = :aValue, b = :bValue, c = :cValue
WHERE id = :idValue
AND lastupdate = :readTimestamp
~~~
Und dann bekommst Du "0 Sätze geändert", wenn sich zwischenzeitlich was geändert hat. Damit das klappt, konfigurierst Du die Table so, dass die lastupdate Spalte vom Typ TIMESTAMP ist und nach jedem Update den aktuellen Timestamp annimmt. Ich hoffe, das funktioniert schon mit deinem Uralt-Mysql (du hast noch 5.5, wenn ich mich recht erinnere). Andernfalls musst Du den Timestamp bei jedem Update manuell auf NOW() setzen.
[Hier steht, wie](https://dev.mysql.com/doc/refman/5.7/en/timestamp-initialization.html).
_Rolf_
--
sumpsi - posui - obstruxi