加入收藏 | 设为首页 | 会员中心 | 我要投稿 湘西站长网 (https://www.0743zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

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

发布时间:2021-04-01 05:43:32 所属栏目:站长百科 来源:网络整理
导读:我在多应用程序环境中有许多竞争更新语句.根据目前的设计,死锁频繁. 如有必要,可以跳过除一个更新之外的所有更新,并在下一个时间间隔更新. 我可以将NOWAIT应用于更新声明吗?当无法获得锁定时,我可以让我的声明无声地失败吗?我可以指定尝试获取锁定的时间吗

我在多应用程序环境中有许多竞争更新语句.根据目前的设计,死锁频繁.

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

我可以将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,您可以像以前一样处理.

(编辑:湘西站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读