I have seen a feature in different web applications including Wordpress (not sure?) that warns a user if he/she opens an article/post/page/whatever from the database, while
Sounds like it will work fine. If you want to denormalize this and remove the extra Events
table, just add a UserId
and Timestamp
field to the Articles
table, as that is all you really need.
You can easily check if the UserId
doesn't match and if the Timestamp
is less than 100 seconds old, then show the message.
This way, you won't have to do any deletions on a separate table.
I'd just add that you could have an AJAX query fire every minute or so if something has been done on the page to update the timestamp.
Does editing an article always take less than 100 seconds ?
Yeah, that's great and should work fine.
In addition, I'd add the possibility for user B to break the lock - if that's at all wanted!
That is, the possibility to replace A's lock by B's. This way, you could avoid the time restraint, and they would see 'Hey, this is being edited by A, and this lock is XXX seconds/minutes old. Do you want to break this lock?'.
With nice users (i.e. no malicious admins), this approach may be better than having just 100 seconds to edit something - sometimes you just need more time.