heinetz: LOCK TABLES?

Beitrag lesen

Hallo Forum,

ich habe vor langer Zeit mal eine Anwendung programmiert, bei der über ein einfaches Frontend mit HTML-Formularen nahezu sämtliche Inhalte einer MySQL-DB editiert werden können. Dieses Frontend wird von so einigen Benutzern bedient und ich habe mir damals keine Gedanken darüber gemacht, dass die zeitgleich auf die DB zugreifen könnten. Darüber hinaus ist nicht einfach so, dass ein Datensatz nur:

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

... überschrieben wird, sondern nach dem Absenden des Formulars passiert in der DB einiges.
Sprich die Prozedur besteht darin, dass diverse MySQL-Statement nacheinander ausgeführt werden, weil mehrere voneinander abhängige Datensätze manipuliert werden müssen.

Nun ist es mehrfach vorgekommen, dass nach oder während der Benutzung des Systems Datensätze verschwunden waren und dem Anschein nach immer dann, wenn mehrere Benutzer gliechzeitig mit dem System arbeiteten, was ich nur so interpretieren kann, dass die Datenbankinhalte durch einen anderen Zugriff geändert werden, während die eben beschriebene Prozedur abgearbeitet wird.

Nun würde ich am liebsten erstmal irgendwie nachvollziehen, in welchem Moment sich was genau in die Quere kommt. Dazu könnte man sicher jedes abgesetzte MySQL-Statement zusammen mit der SESSION-ID und einem Timestamp loggen. Ich kann mir aber vorstellen, dass die Programmierung dieser Loggerei zum Einen aber vor Allem die Auswertung, wenn dann eine Fehler aufgetreten ist zum Anderen so aufwändig ist, dass es einfacher ist, MySQL-Tabellen zu sperren. Ich habe allerdings noch nie mit LOCK TABLES gearbeitet. Muss ich irgendwas bedenken?

beste gruesse,
heinetz