Tom: Mysql: Tabelle sperren

Beitrag lesen

Hello,

Jetzt kommt es ab und zu vor, dass zwei Webseitenbesucher zur gleichen Zeit die Seite aufrufen und dann zwei Bilder für einen Tag ausgewählt werden.

Das möchte ich verhindern, indem ich die Mysql-Tabelle, welche die Bildinformationen enthält, vor dem Update-Befehl sperre.
Ist es richtig, wenn ich mit "LOCK tabelle; UPDATE tabelle; UNLOCK tabelle;" vorgehe?

Kann man so machen.

kommt darauf an, ob innerhalb _eines_ Requests gelesen und geschrieben wird, oder ob der Vorgang auf zwei oder mehr verteilt ist.

Man muss die Tebelle nicht sperren. Man muss sich nur merken, ob die Auswahl für den Tag schon stattgefunden hat. Dieses Kriterium kann man dann auch in die Abfrage einsetzen.

Dazu müsste die Tabelle dann eine Spalte für das Auswahldatum des Bildes haben.

Beim Schreiben stellt man dann fest, ob die Tabelle schon einen Datensatz mit dem aktuellen Datum enthält. Wenn ja, wird das Update nicht durchgeführt, wenn nein, darf es durchgeführt werden und das Datum wird aktualisiert.

Der erste, der schreibt, gewinnt dann. Das muss allerdings nicht der erste sein, der gelesen hat.

Liebe Grüße aus dem schönen Oberharz

Tom vom Berg

--
 ☻_
/▌
/ \ Nur selber lernen macht schlau
http://bergpost.annerschbarrich.de