Originariamente inviato da superpelo
Pensavo anche io a una soluzione del genere:
LOCK(tabella,content_id,utenti_id,data);
Dove tabella + content_id sono la chiave (e raqppresentano la risorsa lockata), utenti_id è l'utente che detiene il lock e data è il timestamp dell'istante in cui è stato acquisito il lock.
Mettiamo che un utente possa possedere il lock per al più 1h (tempo più che sufficiente per modificare un record). Dopo questo tempo tutti i lock vengono rilasciati in automatico.
Se un utente fa il logout tutti i suoi lock vengono rilasciati.
Quando vengono salvate le modifiche (o annullate) i lock vengono rilasciati.
In questo modo nessuno blocca la risorsa per sempre e tutto il sistema è agile.
La tabella LOCK la faccio con INNODB e le query su di essa le metto in una transazione, così dovrebbe filare tutto liscio.
Che ne dite?