phpbar.de logo

Mailinglisten-Archive

[php] Transaktionen / Datenkonsistenz

[php] Transaktionen / Datenkonsistenz

=?iso-8859-1?Q?=22R=F6=DFing=2C_Dieter=22?= Dieter.Roessing_(at)_cci.de
Mon, 20 Nov 2000 16:27:49 +0100


Hallo zusammen,

ich schreibe gerade eine Anwendung mit PHP. Für die Datenbankzugriffe
benutze ich eine ODBC-Verbindung. Ich möchte Benutzern die Möglichkeit geben
bestimmte Datensätze in der Datenbank zu ändern. 

Um sicherzustellen, daß nicht ein anderer Benutzer den gleichen Datensatz
schon geändert und in die DB-eingespielt hat, lese ich vor dem Update einen
Timestamp aus der entsprechende Tabelle und vergleiche ihn mit dem Timestamp
beim ersten lesen. Stimmen diese Werte überein, kann geschrieben werden,
ansonsten erscheint eine entsprechende Meldung am Bildschirm.

Jetzt kann es aber vorkommen, das zwischen dem Auslesen des Timestamps, der
Überprüfung auf Gleichheit und dem Update jemand anderes in die Datenbank
hineinschreibt. Das möchte ich natürlich auch verhindern. Wie kann soetwas
geschehen?

Ich dachte an folgendes:

BEGIN TRANSACTION

  select ....
  Prüfung der Bedingung
  update ...

COMMIT TRANSACTION

Ich bin weiß aber nicht, ob bei dieser vorgehensweise wirklich die Zeile
gesperrt wird.

Welche anderen Möglichkeiten gibt es noch?

bis dann. Dieter


php::bar PHP Wiki   -   Listenarchive