解决方案 »

  1.   

    软件流程有个概念,叫 缓冲更新,又叫乐观性锁定,专门应对你这种情况
    大概是这种流程
    -- 前期select 不锁定
    select SOME_id from xxxx where id=xxxx
    ---交互性操作, 把SOME_ID保存成一个变量old_id-- 需要更新时,比较旧值和当前值,如果当前值和旧值不一样,说明数据已被其他用户更新,更新失败BEGIN TRANSACTION
    select SOME_id from xxxx where id=xxxx FOR UPDATE
    if some_id<>old_id
     --  如果当前值和旧值不一样,说明数据已被其他用户更新,更新失败
        rollback
        return
    endif
    update xxx set some_id=new_id where id=xxxx
    commit你应该把以上事务做成存储过程, 把旧值当做一个变量输入