oracle数据库--select...for update用法

select...forupdate语句用于在数据库中实现行级锁定,避免多线程环境下产生脏数据。当查询数据时,可以使用此语句锁定查询结果,其他线程需等待事务完成才能修改。wait3表示等待3秒,nowait则不等待并立即返回错误。此外,of子句可用于指定锁定特定表的行,在多表操作中尤为有用。
摘要由CSDN通过智能技术生成

一、作用

select...for update 常用于对数据进行行锁,比如当我查询出来的数据为了防止被其他线程同步修改,删除导致脏数据的产生。此时可以使用select...for update 对当前查询出来的数据进行加锁,其他线程要修改/删除这条同样的数据时,必须等上面select...for update 事务提交或回滚后才能进行操作。

二、用法

  1. select...for update 其余线程会一直等待

  1. select * from test where a=2 for update wait 3; 如果3秒内还是无法加锁则返回错误

  1. select * from test where a=2 for update nowait;不会等待,直接报错

  1. select * from Table1 a join Table2 b on a.pkid=b.pkid where a.pkid = 10 for update of a.pkid 只锁定Table1中满足条件的行, 这就是使用of子句的作用. 比较常用于多个表的操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值