oracle – 什么时候应该在游标中使用’for update nowait’?
发布时间:2020-12-12 13:47:56 所属栏目:百科 来源:网络整理
导读:在这种情况下,我们需要在游标中使用update nowait. 使用for update nowait将导致行占用并获取锁定,直到执行提交或回滚. 尝试获取锁定的任何其他会话都将收到ORA-00054的Oracle错误消息:资源占用,并通过NOWAIT指定或超时获取,而不是等待释放锁定. SESSION1:
在这种情况下,我们需要在游标中使用update nowait.
使用for update nowait将导致行占用并获取锁定,直到执行提交或回滚.
尝试获取锁定的任何其他会话都将收到ORA-00054的Oracle错误消息:资源占用,并通过NOWAIT指定或超时获取,而不是等待释放锁定. SESSION1: CURSOR abc_cur IS select * from dept where deptno =10 for update nowait; 这里行被锁定,直到游标关闭或提交/回滚执行.如果同时第2个会话中的另一个用户尝试访问相同的记录,那么将会出现如下错误: 会议2: select * from dept where deptno =10 for update nowait; 该用户甚至不能更新或删除第一个会话已锁定的相同记录. ERROR at line 1: `ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired` 用法: 编辑 declare cursor abc is select * from temp ; temp abc%rowtype; begin open abc; end; 现在在会议2我执行 select * from temp ; 0 rows found 如果我再次执行相同的脚本 declare cursor abc is select * from temp ; temp abc%rowtype; begin open abc; end; 然后我得到ORA-00054:资源繁忙并且采用NOWAIT指定或超时到期,而不是等待释放锁. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |