20.6 Select…For Update语句与锁
来源:互联网 发布:汇编语言和c语言哪个好 编辑:程序博客网 时间:2024/05/13 22:26
20.6Select…For Update语句与锁
Select…ForUpdate语句的语法与select语句相同,只是在select语句的后面加FOR UPDATE [NOWAIT]子句。
该语句用来锁定特定的行(如果有where子句,就是满足where条件的那些行)。当这些行被锁定后,其他会话可以选择这些行,但不能更改或删除这些行,直到该语句的事务被commit语句或rollback语句结束为止。
如图20.51所示,左上角的会话用Select…ForUpdate语句锁定了Department表中DeptNo='01'的行,右上角的会话说明其他会话不可以继续更改该行上的数据。从OEM中的锁的信息可以看出,Select…ForUpdate语句所加的锁与update语句所加的锁相同:一个行级别的EXCLUSIVE锁(说明多个事务不能同时操作同一行)、一个表级别的ROWEXCLUSIVE锁。
图20.51 Select…ForUpdate语句锁定了符合where条件的行
如图20.52所示,左上角的会话用Update语句锁定了Department表中DeptNo='01'的行,右上角的会话说明其他会话不可以用Select…For Update语句继续锁定该行。
图20.52 Select…ForUpdate语句被其他会话阻塞了
如图20.53所示,左上角的会话用Update语句锁定了Department表中DeptNo='01'的行,右上角的会话说明其他会话不可以用Select…For UpdateNOWAIT语句继续锁定该行,且会立即返回一个错误提示“ORA-00054: 资源正忙, 但指定以NOWAIT 方式获取资源”,而不需要等待加锁成功。
图20.53 如果加锁不成功,则Select…For Update NOWAIT语句就会立即返回错误提示
可以看出,如果仅仅用update语句来更改数据时,可能会因为加不上锁而没有响应地、莫名其妙地等待,但如果在此之前,先用Select…For UpdateNOWAIT语句将要更改的数据试探性地加锁,就可以通过立即返回的错误提示而明白其中的道理,或许这就是ForUpdate和NOWAIT的意义之所在。
- 20.6 Select…For Update语句与锁
- select语句for update
- Select For update语句浅析
- Select For update语句浅析
- select语句for update作用
- Select For update语句浅析
- Select For update语句浅析
- Select For update语句浅析
- Select For update语句浅析
- select语句for update---转载
- select 语句for update作用
- Select For update语句浅析
- Select For Update 语句浅析
- Select For update语句浅析
- Select For update语句浅析
- Select For update语句浅析
- Select For update语句浅析
- Select For update语句浅析
- 一个专业的缺陷跟踪管理软件:JIRA
- JAVA中冒泡排序
- TDD,测试代码可以代替文档吗?(转载)
- 娃娃鸭《Delphi 6集成开发环境》笔记
- 汉字内码UNICODE转换表
- 20.6 Select…For Update语句与锁
- location.reload() 和 location.replace()的区别和应用
- 什么技术和应用赚钱?
- glew的使用方法
- TVSKIN源代码阅读日记(二)------ ReadResourceData()
- TVSKIN源代码阅读日记(三)--- __declspec(property())……
- C#通过引用Office Excel (2007) 组件实现对Excel文件的操作
- jar下载地址大全,老紫竹将持续更新并提供本地下载
- SQL基础回顾--连接查询JOIN