Oracle:更新语句没有等待/没有失败

前端之家收集整理的这篇文章主要介绍了Oracle:更新语句没有等待/没有失败前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在多应用程序环境中有许多竞争更新语句.根据目前的设计,死锁频繁.

如有必要,可以跳过除一个更新之外的所有更新,并在下一个时间间隔更新.

我可以将NOWAIT应用于更新声明吗?当无法获得锁定时,我可以让我的声明无声地失败吗?我可以指定尝试获取锁定的时间吗?

解决方法

不能在update语句中指定NOWAIT – 必须在SELECT FOR UPDATE语句中指定NOWAIT.

是的,您可以静默地使select更新失败 – 如果您指定NOWAIT并处理生成的异常:

BEGIN
  SELECT x FROM table FOR UPDATE NOWAIT;
EXCEPTION
  WHEN OTHERS THEN
    <handle exception>
END;

是的,可以指定一段时间等待.在上例中代替NOWAIT,指定WAIT n,其中n是等待锁定的秒数.如果你在那段时间内无法获得锁定,它将再次失败,使用ORA-00054,您可以像以前一样处理.

猜你在找的Oracle相关文章