1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Datei / Tabelle vor bearbeiten schützen

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von simusch, 06.03.2005.

  1. simusch

    simusch Thread Starter MacUser Mitglied

    Mitglied seit:
    27.09.2004
    Beiträge:
    2.245
    Zustimmungen:
    190
    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!
     
  2. wegus

    wegus MacUser Mitglied

    Mitglied seit:
    13.09.2004
    Beiträge:
    15.305
    Zustimmungen:
    1.808
    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