向在线的朋友问个问题在更新一个表的时候怎么判断这个表是否被锁住。(用代码实现)

解决方案 »

  1.   

    for update no wait 
    然后捕捉异常即可。。
      

  2.   

    楼上两位的方法都不错。
    我一般通过ALL_OBJECTS,V$LOCKED_OBJECT来分析,但从没有在update前专门判断是否有锁表,对于这一些事情,还是尽量从管理上来约束,不能靠编码解决全部问题。
    end!
      

  3.   

    SELECT l.session_id sid, s.serial#, l.locked_mode, l.oracle_username, s.user#,
           l.os_user_name,s.machine, s.terminal,a.sql_text, a.action  
         FROM v$sqlarea a,v$session s, v$locked_object l
        WHERE l.session_id = s.sid
          AND s.prev_sql_addr = a.address 
    ORDER BY sid, s.serial#;