我在多应用程序环境中有许多竞争更新语句.根据目前的设计,死锁频繁.
如有必要,可以跳过除一个更新之外的所有更新,并在下一个时间间隔更新.
我可以将NOWAIT应用于更新声明吗?当无法获得锁定时,我可以让我的声明无声地失败吗?我可以指定尝试获取锁定的时间吗?
解决方法
不能在update语句中指定NOWAIT – 必须在SELECT FOR UPDATE语句中指定NOWAIT.
是的,您可以静默地使select更新失败 – 如果您指定NOWAIT并处理生成的异常:
BEGIN
SELECT x FROM table FOR UPDATE NOWAIT;
EXCEPTION
WHEN OTHERS THEN
END;
是的,可以指定一段时间等待.在上例中代替NOWAIT,指定WAIT n,其中n是等待锁定的秒数.如果你在那段时间内无法获得锁定,它将再次失败,使用ORA-00054,您可以像以前一样处理.
【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。