Oracle给Select结果集加锁,Skip Locked(跳过加锁行获得可以加锁的结果集)
1、通过select for update或select for update wait或select for update nowait给数据集加锁
具体实现参考select for update和select for update wait和select for update nowait的区别
2、Skip Locked(跳过加锁行获得可以加锁的结果集)
Skip locked是oracle 11g引入的。
通过skip locked可以使select for update语句可以查询出(排除已经被其他会话加锁了的数据行)剩下的数据集,并给剩下的数据集,进行加锁操作。
a、测试一、
代码如下:新建一个SQL窗口1(相当于新建一个会话),执行
update test8 set price=6 where ID=1
但是不执行commit操作,此时,当前数据已经被加锁了。
然后,在新建一个SQL窗口2(相当于新建一个会话),执行
select * from test8 for update skip locked

根据结果集,我们发现ID=1的数据行被排除了
b、测试二
新建SQL窗口1(相当于新建一个会话)代码如下:执行如下语句
select * from test8 for update

此时,不进行commit操作,表中所有的数据行被加锁。根据测试一的结果得出推论:如果使用skip locked的话将查询不出任何结果
新建SQL窗口2(相当于新建一个会话)代码如下:执行如下语句
select * from test8 for update skip locked

没有查出任何结果集,ok,推论正确!
Oracle给Select结果集加锁,Skip Locked(跳过加锁行获得可以加锁的结果集)的更多相关文章
- 解析oracle对select加锁的方法以及锁的查询 转
转自 https://www.jb51.net/article/37587.htm 本篇文章是对oracle对select加锁的方法以及锁的查询进行了详细的分析介绍,需要的朋友参考下 解析oracle ...
- [20171120]11g select for update skip locked.txt
[20171120]11g select for update skip locked.txt --//11G在select for update遇到阻塞时可以通过skipped locked跳过阻塞 ...
- FOR UPDATE SKIP LOCKED
SYS_UNIT 中有UNIT_ID 0000000001 0000000002 0000001100 原意为若启用多线程,则每个线程在获取时仅可以获取一条数据(互斥) 脚本如下 1.SELECT * ...
- oracle中 SELECT INTO 和INSERT INTO ... SELECT区别
在Oracle中,将一张表的数据复制到另外一个对象中.通常会有这两种方法:insert into select 和 select into from. 前者可以将select 出来的N行(0到任意数 ...
- ORACLE-SELECT学习
(一)select格式:SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名2>[,…] [W ...
- Oracle【select from 语句】
Oracle[select from 语句] 1.select基本功能介绍1)投影操作:结果集是源表中的部分“列”2)选择操作:结果集是源表中的部分“行”3)选择操作+投影操作:结果集是源表中的部分 ...
- Oracle 数据库(oracle Database)Select 多表关联查询方式
Oracle数据库中Select语句语法及介绍 SELECT [ ALL | DISTINCT ] <字段表达式1[,<字段表达式2[,…] FROM <表名1>,<表名 ...
- Oracle中select使用别名
1 .将字段用as转换成别名. 2 .直接在字段的名字后面跟别名. 3 .在字段后面用双引号引起的别名. 我的朋友 大鬼不动 最近访客 fhwlj kochiyas 大極星 Alz__ deser ...
- 数据库Oracle的select用法(部分)
Oracle的select用法(部分): 1.查询所有: select * from employees; 2.加上where子句:用选择限制行 select * from employees whe ...
随机推荐
- 【Head First Java 读书笔记】(八)接口与抽象类
接口是什么?它是一种百分之百纯抽象的类. 什么是抽象类?即无法初始化的类. 例如,我们设计一个animal类,以此类为父类,分别设计了多种动物子类,例如Lion,Tiger,Cat,Wolf,Do ...
- maven-multiModule
主pom的定义 packaging:pom modules的指定 dependencyManagement的指定 properties的指定 build或profile的设置 子module的创建 在 ...
- vmware获取主机、数据中心等对象ManagedObjectReference
在vmware的api中提供以下列表中的对象,称作ManagedObjectReference,包括虚拟机信息.主机.数据中心等等一些信息,我们可以通过vcenter的web api得到. 下面我们来 ...
- python的requests库详解
快速上手 迫不及待了吗?本页内容为如何入门 Requests 提供了很好的指引.其假设你已经安装了 Requests.如果还没有,去安装一节看看吧. 首先,确认一下: Requests 已安装 Req ...
- Windows安装mysql8.0
一.下载并解压 地址:https://dev.mysql.com/downloads/mysql/ 如下图: 下载解压后 二.创建my.ini文件 在D:\mysql\mysql-8.0.13-win ...
- ASP.NET MVC 使用过滤器需要注意
想往下继续执行就return~
- Centos 固定ip
vim /etc/sysconfig/network-scripts/ifcfg-eth0 BOOTPROTO="static" ONBOOT=yes IPADDR=192.168 ...
- 三个数组求中位数,并且求最后中位数的中位数-----C++算法实现
文件Median.h #include <list> class CMedian { public: explicit CMedian(); virtual ~CMedian(); voi ...
- UWP平台Taglib编译(2)
此文已由作者郑博授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验 #endif // _WIN32 } class FileStream::FileStreamPrivate ...
- c++分块算法(暴力数据结构)
快要noip了,该写些题解攒攒rp了(逃) 看到题解里那么多线段树啊,树状数组啊,本蒟蒻表示:这都是什么鬼东西? 在所有高级数据结构中,树状数组是码量最小的,跑的也基本是最快的,但理解很难,并且支持的 ...