MySQL Transaktionen bei mehreren Benutzern

Hallo,

ich möchte ein Interface programmieren, worauf mehrere Personen zur gleichen Zeit Zugriff haben könnten.
Und zwar soll das Interface einen bestimmten Wert um 1 erhöhen jedesmal wenn auf eine Taste geclickt wird.
Es kann aber vorkommen, dass 2 oder mehrere Personen gleichzeitig die gleiche Taste clicken! dann wird mind. eine person den falschen wert aus der datenbank haben weil die transaktion bei einem user noch nicht abgeschlossen.
Wie kann man am besten so was lösen?

Danke schon mal im Voraus für eure Vorschläge.
Mfg

Es kann aber vorkommen, dass 2 oder mehrere Personen
gleichzeitig die gleiche Taste clicken! dann wird mind. eine
person den falschen wert aus der datenbank haben weil die
transaktion bei einem user noch nicht abgeschlossen.

und an welcher stelle tritt jetzt die kollision auf?

Wie kann man am besten so was lösen?

Danke schon mal im Voraus für eure Vorschläge.

update table set spalte=spalte+1

kollisionen gibt es dabei nciht

das ist mir schon klar das mit dem update! aber es kann sein dass mehrere Personen das update zur gleichen zeit machen wollen!
z.B.:
User 1 zeit1 id = 1+1
User 1 zeit1 id = 1+1 (sollte aber so sein: id=‚2‘+1) da er aber nicht den aktuellen wert zu dem zeitpunkt zeit1 vom ersten user nicht hat erhält er den falschen wert von id.

Wie kann ich sowas lösen?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

ich meinte natürlich
User1 zeit1 id = 1+1
User2 zeit1 id = 1+1 -> sollte aber id = 2(von ersten user) +1 sein

z.B.:
User 1 zeit1 id = 1+1
User 1 zeit1 id = 1+1 (sollte aber so sein: id=‚2‘+1)

Hallo,

Du kannst es mit optimistischer Synchronisation versuchen:

user 1: user2:
SELECT id from tab;
-- id = 1
 SELECT id from tab;
 -- id = 1
UPDATE tab SET id = 2
WHERE id = 1
-- correct
 UPDATE tab SET id = 2
 WHERE id = 1
 -- tut nichts

Durch das WHERE werden geänderte Datensätze abgefangen. Man muss jetzt die Prozedur wiederholen.

Du kannst auch ganz einfach das Erhöhen ins Update packen statt die id anzuzeigen und dann zu erhöhen. Das hat vorhin schon jemand gepostet:

UPDATE tab SET id = id+1

Gruß

Peter


> <small>[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]</small>