如果可以在查询的时候锁住查询出来的记录  那么可以直接用select …… for update 做查询语句  这样就可以保证没有人会在你查询的时间差内修改数据  当然你也需改不了别人查询地数据  但是不建议这样做  这样很容易造成数据的地锁死现象。我们的处理办法是  在数据表里加入版本号的字段  每次数据表的变动  都要修改这个版本号  使版本号加1  这样  只要判断版本号是否与你查询出来的版本号相同  就可以判断是不是有人同时查出了同一条记录   并且比你早修改了  你明白了吗?

解决方案 »

  1.   

    关于并发,在应用程序中控制罗,insert/update/delete语句嵌套在事务处理中,提交之前判断一下,如果数据已被更改,就回滚。数据库在这方面的控制,大致知道一些锁吧,但在实际中没有用过。
      

  2.   

    谢谢  gzhughie,还有别的方法吗??
      

  3.   

    gzhughie(hughie) 的方法
    “我们的处理办法是  在数据表里加入版本号的字段  每次数据表的变动  都要修改这个版本号  使版本号加1  这样  只要判断版本号是否与你查询出来的版本号相同  就可以判断是不是有人同时查出了同一条记录”
    可以改进为采用timestamp字段。
      

  4.   

    解决数据库并发?
    难道oracle没有考虑这个问题吗?我觉得只需要根据业务的需要,使用不同的锁机制就可以了
      

  5.   

    TO llm06 能具体点吗??
    分不够再加,具体就行。
      

  6.   

    gzhughie说的方法挺好,
    有没有通过ORACLE的提供的方法解决这个问题的,比如锁
      

  7.   

    ORACLE的锁机制啊~呵呵~ZP乎??接分~~:)
      

  8.   

    gzhughie(hughie) :
    你们的版本号是从Oracle启发的吧!
    Oracle在读数据时其实本身已经为每一行加上版本号---SCN号