我写了个存储过程,WorkInfo是记录所要取的所有任务,存储过程执行的是对WorkInfo进行Update,对TempWorkInfo进行Insert,通过WorkInfo的Havefinishnum来限制只有两个人能操作WorkInfo里面的任务,但是现在在TempWorkInfo中出现了多于两个人取WorkInfo里面的任务记录(多于两个人update了WorkInfo中的同一个任务),我想这是一般的更新丢失或者乐观并发,求教高手这种情况应该怎么处理。

解决方案 »

  1.   

    对于您的这个问题, 看看tom的书会使你非常清楚这个概念的."查询重启动",以及"串行"事务,你自己看.
      

  2.   

    悲观的类似vss的做法乐观的类似cvs和subversion的做法
      

  3.   


    我们以前对这个lock不是在database级别做的,因为我们的应用来说,用户做edit的时候,其实并没有马上保存,而是在页面上修改好了数据以后才保存的,而对于数据库来说,我们不可能把这条记录从点击edit的时候就上锁,而直到点击save的时候才解锁,如果这样处理的话,对于应用系统来说简直就是灾难,我们的做法,其实是自己做的应用上的锁,当点击edit的时候,其实是应用上的锁,而不是数据库级别的锁,save的时候,去检查这个锁,进行处理。当然我们的上锁,解锁的策略有多种形式,类似vss和cvs/subversion的都有。但是都是通过应用做的,