Michael Schröpl: überschreiben von Änderungen vermeiden

Beitrag lesen

Hallo Andreas,

Ich habe eine Oberfläche gebastelt, mit der ein Benutzer Daten aus 3 Tabellen bearbeiten kann. Das funktioniert auch alles schön und gut, nur überlege ich jetzt, was denn passiert wenn 2 Leute gleichzeitig die Daten ändern, und so der eine die Änderungen des anderen überschreibt.

genau für diesen Fall wurde das Konzept der Transaktionen in Datenbanksystemen erfunden.

Eine Transaktion ist nur das Ganzes durchführbar, sie umfaßt beliebig viele SQL-Statements (auf beliebig vielen Tabellen) und endet mit "commit" oder "rollback".
Unterstützt Dein RDBMS dieses Konzept?

Aber was wenn jetzt 2 Benutzer dieselben Daten editieren wollen? Das darf nicht sein, also muss ich mir eine Art Locking-Mechanismus überlegen.

Generationen von Datenbank-Herstellerfirmen beschäftigen sich mit diesem Problem seit mehreren Jahrzehnten.
Dein Skript muß mir der Situation leben können, daß eine Transaktion auch scheitern kann - das ist alles. (Ob Du in diesem Falle automatisch einen retry machst oder eine Fehlermeldung ausgibst, das ist Deine Design-Entscheidung.)

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)
 => http://www.peter.in-berlin.de/projekte/selfcode/?code=sh%3A|+fo%3A}+ch%3A]+rl%3A(+br%3A^+n4%3A(+ie%3A%25+mo%3A)+va%3A|+de%3A%2F+zu%3A|+fl%3A(+ss%3A)+ls%3A~+js%3A|
Auch diese Signatur wird an korrekt konfigurierte Browser gzip-komprimiert übertragen.