参考:
http://www.dbonline.cn/source/oracle/20031213before/STRUCTURE/How%20to%20Acquire%20Lock%20without%20Handling%20Exceptions.htm

解决方案 »

  1.   

    中文的有
    http://www.pcworld.com.cn/99/9947/4739e.asp
    实际上就是加锁
      

  2.   

    Using FOR UPDATE
    When you declare a cursor that will be referenced in the CURRENT OF clause of an UPDATE or DELETE statement, you must use the FOR UPDATE clause to acquire exclusive row locks. An example follows:DECLARE
       CURSOR c1 IS SELECT empno, sal FROM emp
          WHERE job = 'SALESMAN' AND comm > sal 
          FOR UPDATE NOWAIT;
    The SELECT ... FOR UPDATE statement identifies the rows that will be updated or deleted, then locks each row in the result set. This is useful when you want to base an update on the existing values in a row. In that case, you must make sure the row is not changed by another user before the update.The optional keyword NOWAIT tells Oracle not to wait if requested rows have been locked by another user. Control is immediately returned to your program so that it can do other work before trying again to acquire the lock. If you omit the keyword NOWAIT, Oracle waits until the rows are available.