日期:2014-05-17  浏览次数:20743 次

多用户同时对数据库中的表进行操作
在我的网站中,打开一条合同信息,然后进行修改,保持修改状态并未提交,然后用另一个用户重新登录,对这个合同进行修改然后修改,提交成功,先前打开的信息没后更新,然后再提交会覆盖刚才修改的内容,这种现象怎么避免。

------解决方案--------------------
一条合同多个人修改,这需求本身就有点不太合理,不过想解决的话,可以考虑两种做法:
◎ 乐观锁
1、表中增加:最后修改时间、最后修改人;
2、打开时就读取最后修改时间和修改人信息;
3、保存是检查最后修改时间和修改人信息是否匹配,如果不匹配就警告:在你修改途中,已经有别人做过修改了,如果保存就会覆盖别人的劳动成果。

◎ 悲观锁
1、表中增加:正在修改时间、正在修改人;
2、打开时检查是否有“正在修改时间”和“正在修改人”,如果有则警告是否强制继续修改;
3、更新正在修改时间和修改人信息;
4、保存时清除“正在修改时间”和“正在修改人”。
------解决方案--------------------
按照常理来说。。这样的修改是正常的。。
------解决方案--------------------
还可以增加一个版本字段,改一次,数据库中保存一条新的记录,并且就版本加1,这样能同时存在多个版本。