这个方法如何:
1.在表中加三个字段user(用户名称), sessionid(session id), entertime(开始修改时间)三个字段。
当a用户进入修改的时候把这三个字段填上值。比如
update abcd set user='xxxx..',sessionid='xxxx..', entertime='2004-10-10' 
where (user is null or user=[你自己]) and 其他条件
如果返回<=0,说明已经有人在修改了,你可以从数据库中读取这个用户,然后提示
2.在保存、取消保存的时候
update abcd user=null,sessionid=null, entertime=null  where 其他条件
3.为了解决有的用户没有保存就退出(比如关闭浏览器)的情况。在数据库中写一个job(定时运行的),内容大概如下:
update abcd user=null,sessionid=null, entertime=null where 
 DATEDIFF(minute, entertime, getdate()) > 10
上面的内容是说:如果开始修改时间离现在大于10分钟,就清除这个锁定
------------------------
以上方法的不好的地方:
1)不能完全保证没有冲突。比如:a用户进入某个修改页面10分后,别人就可以访问了
2)数据库的job运行的周期不能太小,否则会影响数据库的性能。如果周期太长,又很难解决
一个用户锁定数据(比如关闭浏览器)的问题。所以一个是要得到一个较适合的数据,第二要用户之间沟通