系统中 可能出现 两个人同时操作 一个表 的同样的记录
这种 情况 该怎么解决???
又比如 一个人在 查询  一个人在修改   又该如何请知道的大哥们详细点告诉小弟不胜感激付上代码 更好 谢谢  急需解决!!!!!!

解决方案 »

  1.   

    修改时
    begin tran
      update table with(rowlock)
        set ...
      where ...
      if (@@error<>0) or (@@rowcount=0)
        begin
          rollback tran
          return
        end
      else
        begin
          commit tran
          tran
        end
      

  2.   

    晕,写错了
    修改时 
    begin tran 
      update table with(rowlock) 
        set ... 
      where ... 
      if (@@error <>0) or (@@rowcount=0) 
        begin 
          rollback tran 
          return 
        end 
      else 
        begin 
          commit tran 
          tran   ---应该是return
        end
      

  3.   

    晕,写错了
    修改时 
    begin tran 
      update table with(rowlock) 
        set ... 
      where ... 
      if (@@error <>0) or (@@rowcount=0) 
        begin 
          rollback tran 
          return 
        end 
      else 
        begin 
          commit tran 
          tran --应该是return
        end
      

  4.   

    既然你知道加锁这个概念,为何不会实现?我知道有2种模式:
    1.悲观锁
      先创建一张锁表,当二个用户同时访问一个订单时(这里订单指的是一个抽象模型),用户的动作首先为签出操作,即当用户签出该订单后,方可有对该订单的编辑权限,在签出的同时,也就向锁表中插入一条加锁信息,该加锁信息表明其有效期限,以及何人,何时的签出操作,另一个用户想要访问该订单时首先看一下是否被其它用户签出,来决定其是否能修改该订单。这种方法破坏了工作的并行性。
    2.乐观锁
       大多是基于数据版本 (Version)记录机制实现。在基于 数据库表的版本解决方案中,一般是通过为数据库表增加一个“version”字段来 实现。 读取出数据时,将此版本号一同读出,之后更新时,对此版本号加一。此时,将提 交数据的版本数据与数据库表对应记录的当前版本信息进行比对,如果提交的数据 版本号大于数据库表当前版本号,则予以更新,否则认为是过期数据。
      

  5.   

    修改时 
    begin tran 
      update table with(rowlock) 
        set ... 
      where ... 
      if (@@error <>0) or (@@rowcount=0) 
        begin 
          rollback tran 
          return 
        end 
      else 
        begin 
          commit tran 
          tran 
        end 看起来 象sql 2k 中语句 在哪里写?表的 触发器?????
      

  6.   

    ???难道sql2k没有这些机制,要我们来编程解决?
      

  7.   

    最简单的用ClientDataset去实现就好了,设好主键
      

  8.   

    当然,用数据库的锁机制也能实现,可以上READPAST锁、ROWLOCK锁等,这些都没问题!
    关键是现在程序做完了,还要一个一个修改整个项目的SQL?不太现实!
    你可以参考一下ASP.NET是如何进行控制并发性更新的~