I have considered these alternatives. But there are some things I'm not sure about.
The way I figure, the only way to have concurrency control is locking particular entries using shared or exclusive locks, like used in SQL Servers. However, the should be some mechanism that makes sure locks are not held for too long. Can session technique control the amount of time a lock is held? Furthermore, since the internet is basically connectionless network, can the session technique detect users which have terminated their session?