Datei / Tabelle vor bearbeiten schützen

simusch

Aktives Mitglied
Thread Starter
Dabei seit
27.09.2004
Beiträge
2.030
Reaktionspunkte
219
bräuchte mal schnell hilfe.. bin bei google nicht recht fündig geworden :-(

ich hab ein einfaches interface für eine hochzeits-adressenverwaltung gemacht.
da kann man alle adressen auf einmal bearbeiten (datei mit grossem formular...)

jetzt ist aber das problem, dass wenn 2 personen gleichzeitig am bearbeiten sind, einander die änderungen überschreiben...
denn wenn man längere zeit einträge am bearbeiten ist und gleichzeitig jemand anderes auch einträge bearbeitet, werden beim abspeichern jeweils alle einträge neu in die datenbank upgedatet.

ich weiss, nicht sehr praktisch, aber das tool musste dringendst funktionieren...

LOCK TABLES hab ich kurz versucht, zeigte aber irgendwie keine reaktion (hab ichs wohl falsch gebraucht?)
gibts ne einfachere variante?

DANKE!
 
Eine simple Möglichkeit, die immer geht wenn Transaktionen nicht vorhanden sind ( oder nicht gewünscht), ist ein eigenes zeilenweises LOCKING ( Die ganze Tabelle zu locken dürfte kontraprdoduktiv sein). Dazu erstellst Du Dir eine Spalte

bearbeitet_von varchar(50)

Wer auch immer eine Zeile bearbeiten möchte, muß sie vorher locken:

(1) bearbeitet_von is null
(2) update tabelle set bearbeitet_von=$username where id=...
(3) select bearbeitet_von from tabelle where id=...

if bearbeitet_von==$username
...tabelle kann bearbeitet werden
... update tabelle set bearbeitet_von=null where id=...
else
datensatz ist gesperrt von bearbeitet_von

Dieses selbstgeschnitzte Locking geht immer. Auch wenn ein Mini-DB-System es nicht anbietet oder das DB-Locking (warum auch immer) nicht verwendet werden soll.

Gruß Karsten
 
Zurück
Oben Unten