博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
select * from salgrade for update和select * from salgrade for update nowait区别
阅读量:7144 次
发布时间:2019-06-29

本文共 1381 字,大约阅读时间需要 4 分钟。

1,select * from salgrade for update

session1 session2

SQL> delete salgrade where grade=1;

1 row deleted.

 
 

SQL> select * from salgrade for update;

此时session2被阻塞

SQL> rollback;

Rollback complete.

 
 

 

     GRADE    LOSAL       HISAL

---------- ---------- ----------
     1      700        1200
     2     1201        1400
     3     1401        2000
     4     2001        3000
     5     3001        9999
被阻塞的session2立马返回了结果,但同时这句也为表加了锁

SQL> delete salgrade where grade=1;
session1被阻塞
 
 

SQL> rollback;

Rollback complete.

1 row deleted.

session1获得资源,执行完毕

 

总结来看,select * from salgrade for update有以下特征:

①如果结果集已经被另一个会话锁定,就会发生阻塞。需要等另一个会话结束之后才可继续执行。

②它会对结果集加锁

2,select * from salgrade for update nowait

session1 session2

SQL> delete salgrade where grade=1;

1 row deleted.

 
 

SQL> select * from salgrade for update nowait;

select * from salgrade for update nowait
*
ERROR at line 1:
ORA-00054: resource busy and acquire with NOWAIT specified or timeout expired

SQL> rollback;

Rollback complete.

 
 

SQL> select * from salgrade for update nowait;

     GRADE    LOSAL       HISAL

---------- ---------- ----------
     1      700        1200
     2     1201        1400
     3     1401        2000
     4     2001        3000
     5     3001        9999

SQL> delete salgrade where grade=1;
session1此时被阻塞
 
 

SQL> rollback;

Rollback complete.

1 row deleted.

session1得到资源,执行完毕

 

总结来看,select * from salgrade for update nowait有以下特征:

①如果结果集已经被另一个会话锁定,会立即返回ORA-00054错误

②该语句本身同样也会对结果集加锁

 

综合总结,这两句语句的作用都是对结果集加排他锁,禁止其他会话做DML作业,如果希望在select期间,结果集不被修改,即可以选择这种方式。

转载于:https://www.cnblogs.com/guilingyang/p/5865845.html

你可能感兴趣的文章
C#基础(一)
查看>>
计算两个DateTime间的时间差(小时差、分钟差、秒钟差等)
查看>>
Copy拷贝
查看>>
[转]免费数学神器!再复杂的公式,只要有照片就能转成LaTeX
查看>>
java之数学方法
查看>>
hdu 2680 (Dijkstra)
查看>>
sas中的sql(3) 标签,格式化输出,关联与非关联子查询子查询,大于两张表的联合查询(暂缺)...
查看>>
HDU_2642_二维树状数组
查看>>
Javascript最简单的把html字符串编码的方法
查看>>
谢启鸿老师思考题及解答合集
查看>>
STM32 ~ 外扩SRAM
查看>>
@DateTimeFormat 和 @JsonFormat 注解
查看>>
BZOJ——2190: [SDOI2008]仪仗队
查看>>
洛谷——P1163 银行贷款
查看>>
GPUImage的使用
查看>>
(转)mac环境变量配置
查看>>
03、CustomRegions
查看>>
luogu P3373 【模板】线段树 2
查看>>
IOS调试—断点调试以及动态输出
查看>>
java Integer类以及拆箱和装箱
查看>>