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

解决方案 »

  1.   

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

  2.   

    按照常理来说。。这样的修改是正常的。。
      

  3.   

    还可以增加一个版本字段,改一次,数据库中保存一条新的记录,并且就版本加1,这样能同时存在多个版本。