FOR UPDATE NOWAIT和 FOR UPDATE

本文介绍了如何使用SQL的select...from for update语句来手动锁定记录,以防止在查询过程中其他用户对这些记录进行修改。此外,还探讨了FOR UPDATE NOWAIT选项的作用,即当数据被其他会话锁定时,立即返回错误而非等待。
通常是通过select … from for update语句添加的,同时该方法也是我们用来手工锁定某些记录的主要方法。比如,当我们在查询某些记录的过程中,不希望其他用户对查询的记录进行更新操作,则可以发出这样的语句。当数据使用完毕以后,直接发出rollback命令将锁定解除。当表上添加了RS锁定以后,不允许其他事务对相同的表添加排他锁,但是允许其他的事务通过DML语句或lock命令锁定相同表里的其他数据行。

 

FOR UPDATE NOWAIT和 FOR UPDATE的区别
别的事务要对这个表进行写操作时,是等待一段时间还是马上就被数据库系统拒绝而返回.制定采用NOWAIT方式来进行检索,所以当发现数据被别的SESSION锁定中的时候,就会迅速返回ORA-00054错误,内容是资源正忙, 但指定以 NOWAIT 方式获取资源。所以在程序中我们可以采用NOWAIT方式迅速判断当前数据是否被锁定中,如果锁定中的话,就要采取相应的业务措施进行处理。
如:当先(1)SELECT * FROM TABLEA FOR UPDATE
然后再(2-1)SELECT * FROM TABLEA FOR UPDATE NOWAIT--直接返回错误;但是以(2-2)SELECT * FROM TABLEA FOR UPDATE执行会阻塞等待,直到(1)的提交或回滚掉

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/35489/viewspace-670539/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/35489/viewspace-670539/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值