Ik begin nu in te zien dat het locken van een record wel belangrijk is (hahahahihihihi).
Aangezien ik een multiuser applicatie heb...

Ik zou graag een melding willen geven (geen toegang willen geven) als iemand een zelfde record - in dezelfde database - wil gaan wijzigen.

Moet ik wellicht zelf een vlaggetje zetten als iemand een record aan het wijzigen is, of zit dat al ergens in de database (MYSQL).

Bij voorbaat dank !
Maar dat bedoel ik natuurlijk ook:

1. Op kantoor inloggen.

2. Document uitchecken om het te bewerken.

3. Thuis opnieuw inloggen = op kantoor uitloggen en document weer inchecken.

4. Eventueel document weer uitchecken wanneer de gebruiker het thuis opnieuw opent.
Is het beter / handiger / sneller om de locks in een aparte tabel te stoppen of kan ik deze in het desbetreffende record vastleggen ?
Paco de Wulp op 17/06/2013 10:05:30

Is het beter / handiger / sneller om de locks in een aparte tabel te stoppen of kan ik deze in het desbetreffende record vastleggen ?

Hangt van verschillende beslissingen af. Kan één gebruiker bijvoorbeeld aan meerdere records tegelijk werken? Of wordt bij het openen van een record een ander door die gebruiker geopend record gesloten?

Welke soorten rechten wil je laten gelden voor de locks? Kan bijvoorbeeld een hoger geplaatste "manager" de lock van een lager geplaatste "medewerker" overrulen?
Persoonlijk zou ik het gewoon aan het record vastleggen.

Dus een tabel waar je alles inzet (even als voorbeeld nieuwsberichten)

Tabel: nieuwsberichten
Velden: id, author, title, summay, message, date, locked

Echter is dit de werkwijze die ik zou hanteren, dit is voor iedereen anders. Ik maak namelijk ook vaak een log tabel, waar ik dit soort wijzigingen in vast leg. Op deze manier kun je snel achter problemen komen, en eventueel je klant/gebruikers erop aan spreken.
Ik zou het ook in de tabel zelf zetten. Je moet het vooral zien als een hulpmiddel. Als Pietje normaal gesproken bericht X mag wijzigen, dan mag hij dat nu ook. Echter, het slot waarschuwt hem dat iemand anders met het bericht bezig is. Mooier is dan nog (denk ik) als je de naam van degene die het bericht aan het bewerken is, opslaat in het "lock" veld. Dus, standaard is het veld bijv. 0 en zodra iemand gaat bewerken, staat de naam van de persoon die aan het bewerken is in het lock-veld. Op die manier kun je dus ook zien WIE het record aan het bewerken is. Dan kun je even naar die persoon toe lopen en vragen of hij inderdaad aan het bewerken is. Zo ja, dan weet je dat jij dus niet kunt bewerken. Zo nee, dan kun jij het bericht gewoon unlocken en alsnog gaan bewerken.
@Ozzie,

Daarom maak ik meestal een log tabel waar ik dus dit soort info in vast leg. Daar sla ik meestal in op.

id, user_id, record_id, changedate, action, error_log

Hier kun je dus eventueel een locked aan toe voegen als je dit gebruikt, zo kun je dus ook makkelijk uit de log de username halen die het momenteel aan het bewerken is.

Maar zoals ik al zei is dit een persoonlijke manier van werken, ik wil perse log's hebben zodat wanneer een klant komt klagen over de werking ik snel kan zien en eventueel aan kan tonen waar het probleem ligt.
Ah oke... da's inderdaad wel handig. Lastige klanten willen we natuurlijk niet :-)
Ozzie PHP op 17/06/2013 13:27:46

Ah oke... da's inderdaad wel handig. Lastige klanten willen we natuurlijk niet :-)


Het is niet zo zeer voor 'lastige' klanten, maar om verschillende redenen.

1. Snel zien waar het fout gaat.
2. Kunnen aantonen waar het fout gaat.
3. Snel het probleem oplossen.

Tja en lastige klanten zul je toch wel krijgen :-P

Reageren