当前位置:网站首页>Oracle数据库:for update 和for update nowait的区别
Oracle数据库:for update 和for update nowait的区别
2022-08-09 10:28:00 【jie_ming514】
for update 和for update nowait的区别
一、说明
别的事务要对这个表进行写操作时,是等待一段时间还是马上就被数据库系统拒绝而返回.制定采用nowait方式来进行检索,所以当发现数据被别的session锁定中的时候,就会迅速返回ORA-00054错误,内容是资源正忙, 但指定以 NOWAIT 方式获取资源。所以在程序中我们可以采用nowait方式迅速判断当前数据是否被锁定中,如果锁定中的话,就要采取相应的业务措施进行处理。
二、实例验证
2.1.for update nowait验证
如何理解上面的话.
- 开启一会话 (就是开一个sqlwindow)
select empno,ename from emp where empno='7369' for update nowait ;
得到下面结果集:
empno ename
7369 smith
- 开启另一会话
select empno,ename from emp where empno='7369' for update nowait ;
返回RA-00054错误,内容是资源正忙, 但指定以 NOWAIT 方式获取资源
上面会话都提交commit;
2.2.for update验证
- 开启一会话,
select empno,ename from emp where empno='7369' for update ;
得到下面结果集:
empno ename
7369 smith
- 开启另一会话
select empno,ename from emp where empno='7369' for update;
阻塞,不返回错误。
提交第一个会话,第二个回话自动执行
提交第二个会话
三、总结
3.1.for update
当第一个session最后commit或者rollback之后,第二个session中的检索结果就是自动跳出来,并且也把数据锁定住.
开启一会话:
select empno,ename from emp where empno="7369" for update;
得到下面结果集:
empno ename
7369 smith
开启另一个会话,
update emp set ename='ALLEN' where empno="7396";
阻塞。
提交第一个会话,update 语句执行
再开启一会话
update emp set ename="SMITH" where empno='7396';
同样阻塞,虽然第一个会话因为提交而释放了锁,但是第二个会话中的update 又给这一行加锁了;
3.2.for update nowait
当你第一个session放开锁定以后,第二个session才能正常运行。当你第二个session语句运行后,数据又被你第二个session语句锁定住了,这个时候只要你第二个session语句后还没有commit,别的session照样不能对数据进行锁定更新等等。
边栏推荐
猜你喜欢
随机推荐
By asking where the variables are stored, the shepherd boy laughed and said to use pointers, Go lang1.18 introductory refining tutorial, from Bai Ding to Hongru, the use of go lang type pointers (Poin
史上最小白之《Word2vec》详解
xmms的歌词显示及音量控制OK
好久没更新博客了
1: bubble sort
Battery modeling, analysis and optimization (Matlab code implementation)
机器学习--朴素贝叶斯(Naive Bayes)
OpenGL ES2.0编程三部曲(转载自MyArrow)
mongodb学习笔记
判断一段文字的width
Apache Log4j 2 远程代码执行漏洞详解
集合与函数
day16_03集合
一天半的结果——xmms on E2
京东物流与五菱将开发联名版定制产品
深度学习--自编码器(AutoEncoder)
electron 应用开发优秀实践
借问变量何处存,牧童笑称用指针,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang类型指针(Pointer)的使用EP05
markdown转ipynb--利用包notedown
Attentional Feature Fusion




![[贴装专题] 视觉贴装平台与贴装流程介绍](/img/ec/870af3b56a487a5ca3a32a611234ff.png)




