oracle给表加锁语句,Oracle 如何通过SQL语句对表中某一行数据加锁

本文介绍了如何在Oracle数据库中通过SQL语句实现行级锁定,包括使用'for update'锁定特定行,处理已锁定的行,以及在更新时加锁。同时,文章还展示了如何查询锁定记录并结束持有锁的会话。
摘要由CSDN通过智能技术生成

我们都知道一些数据库加锁的理论,比如:表锁、行锁、悲观锁和乐观锁,但是由于平时写SQL的时候并没有真正使用过,所以只知道理论,并不知道如何去使用。

今天查了一下资料,对如何通过SQL语句加锁有了一些了解,特整理一下:

一.  session的概念

session,即“会话”,在plsql中,一个新的SQL WINDOW就是一个新的session会话。

二. 建表并初始化数据

create table test(a number,b number);

insert into test values(1,2);

insert into test values(3,4);

insert into test values(8,9);

commit;

三. 使用for update 对表进行锁行操作

(1)新建一个SQL WINDOW,我们称之为session1,在session1中进行锁行操作

select * from test where a=1 for update;

我们还可以在for update语句后加上skip locked语句,过滤掉那些已经被其它session加上锁的行

select * from test where a=1 for update skip locked;

这时我们先不commit session1所做的修改;

(2)新建第二个SQL WINDOW,我们称之为session2,在session2中尝试进行锁行操作,注意这里要锁的数据与session1相同。结果会发现查询和加锁不成功,

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值