dedlfix: LOCK TABLES?

Beitrag lesen

Tach!

  1. per SELECT ausgelesen
  2. dann im <form> angezeigt
  3. und dann mit einem UPDATE

Das sind zwei getrennte Datenbankaktionen. Die bekommst du nicht mit MySQLs Mitteln atomar, weil nach dem Select-Request die MySQL-Verbindung abgebaut wird und zum Update eine neue erstellt wird. Ein LOCK TABLES ist aber an die Session/MySQL-Verbindung gebunden. Wenn du für diesen mehrstufigen Vorgang ein Ändern des Datensatzes von anderen Prozessen verhindern möchtest, musst du dir selbst etwas ausdenken. Das kann zum Beispiel ein spezielles Feld in der Tabelle sein, das mit einer Sperrinformation belegt wird, oder auch eine eigene Tabelle, in der diese Sperrungen hinterlegt werden.

Sprich die Prozedur besteht darin, dass diverse MySQL-Statement nacheinander ausgeführt werden, weil mehrere voneinander abhängige Datensätze manipuliert werden müssen.

Warum ist das nicht in einer Transaction gekapselt?

Nun würde ich am liebsten erstmal irgendwie nachvollziehen, in welchem Moment sich was genau in die Quere kommt.

Das halte ich für unnötig. Es bringt keinen wirklichen Erkenntnisgewinn.

Ich habe allerdings noch nie mit LOCK TABLES gearbeitet. Muss ich irgendwas bedenken?

Ja, du solltest die Eigenschaften von Table-Locking und Transactions im Handbuch lesen und dann schauen, wie sie auf dein Projekt passen.

dedlfix.