Oracle给Select结果集加锁,Skip Locked(跳过加锁行获得可以加锁的结果集)
Oracle 可以 结果 获得 SELECT 加锁 跳过 skip
2023-09-11 14:21:53 时间
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数据库远程连接配置教程
- Oracle实现SQL的isnumeric 函数
- Oracle数据库:oracle数据表格dmp,sql,pde格式导入与导出,视图、序列、索引等对象的导出,oracle完结,后续开启mysql的学习
- Oracle数据库:oracle执行计划性能代价cost,全表扫描速度慢,索引扫描速度快
- Oracle数据库:创建用户user,设置密码,创建角色role,赋予权限grant,撤销权限revoke
- Oracle数据库:创建和删除视图view,简单和复杂视图,内建视图,topN分析,oracle分页查询
- Oracle数据库:oracle事务处理语言TCL,commit,rollback,savepoint语句
- Oracle数据库:子查询、单行子查询,多行子查询,in,any,all语句,子查询的练习案例
- Oracle数据库:条件表达式case when then else end,decode函数,oracle单行函数练习示例
- Oracle数据库:oracle启动,oracle客户端工具plsql安装教程和使用方法
- In Memory—Oracle 12C重要新特性IMO详解
- Oracle内核技术揭密. 2.2 AWR概览
- oracle关键字作为字段名使用方法
- oracle 如何查看创建表等数据库对象时的DDL语句
- Oracle Redo Log
- Oracle----dual
- PLSQL创建Oracle定时任务
- 2021-04 补丁日: Oracle多个产品漏洞安全风险通告
- 2020-07 补丁日:Oracle多个产品高危漏洞安全风险通告
- Oracle中的数据类型详解
- oracle函数 RPAD(c1,n[,c2])
- 转 Oracle]如何在Oracle中设置Event
- 转 Oracle Transportable TableSpace(TTS) 传输表空间 说明
- 转 ORACLE数据库它可以存储 中文 字节或字符
- oracle创建用户与权限操作(oracle学习笔记一)
- ORACLE快速彻底Kill掉的会话(转载)
- [Oracle 工程师手记] 如何构造数据库的 log on trigger
- 【从翻译mos文章】在oracle db 11gR2版本号被启用 Oracle NUMA 支持
- 数据库高可用架构(MySQL、Oracle、MongoDB、Redis)
- netty+springboot+oracle+protobuf 搭建客户端服务端