我不太确定这个是否是一个确定性的问题。打开两个客户端程序,然后分别先后更新同一条记录,这时:问题:应该让后来者更新失败吗? 还是让二者都更新成功? 依据是什么? 最佳实践, 依赖于具体需求?

解决方案 »

  1.   

    这个 问题 很 纠结 的东西业务 上 大家 都说自己 是对的程序 上 只能防止 这种问题 出现所以 像微软的 强雷响 DATASET
    就做得很好更新数据 必须 待回原有 数据原有数据 与 数据 库 数据 不 一致 不允许更新比如:输入库里 有 值 “我爱钱”我修改时 取出 “我爱钱”修改该成“我喜欢钱”传回数据库 就是 "我喜欢钱"   "我爱钱"
    对比数据 “我爱钱” 变没有 变了,就不允许修改
    但是 就是 这种 也纯在 时间 差 问题在这种 情况 下 锁 就 很重要了
      

  2.   

    当客户A以要更新的方式打开这条记录的时候,特别是更新的过程需要耗费时间,比如客户需要填一些资料,这种情况下客户A需要先把这条锁上,然后再填应该填的资料。当然锁的方式不是用的数据库锁,而是自己采用一个技术,比如自己加一个锁的字段。如果这种时候客户B也同时要更新这条记录,他也要先锁,但因为A已经锁了,你就可以告诉他这条记录A正在修改,请他等一会再尝试。
      

  3.   

    1.如LS兄所说,告诉后者这条记录正在修改.
    2.保留两个版本.先者版本和后者版本.等下次再更新时提示.有两个版本.让客户决定是用哪个版本.去掉哪个版本.
    3.建一个数据仓库专门放冲突的数据.
    原来数据库放最终客户决定的唯一数据.
    4.决定权可能不是客户A或客户B.而是他们主管.