oracle db lock问题,提交

use*_*432 0 oracle locking oracle10g

这是oracle 10g.如果我从sqlplus发出一个表的更新但是没有提交,那么在另一个会话中更新同一行并尝试提交,它只会挂起,直到我提交第一个.我知道有些人认为它是锁定机制,但我们的应用程序做了同样的事情,用户被阻止了.

什么是避免这个问题的最佳方法?

Jef*_*emp 5

您可以使用NOWAIT选项发出锁定,而不仅仅是尝试更新

SELECT * FROM mytable
WHERE xxx
FOR UPDATE NOWAIT;
Run Code Online (Sandbox Code Playgroud)

如果该行被另一个用户锁定,Oracle将立即加注ORA-00054: resource busy and acquire with NOWAIT specified.