码迷,mamicode.com
首页 > 数据库 > 详细

Oracle 的for update行锁

时间:2015-04-05 23:10:51      阅读:240      评论:0      收藏:0      [点我收藏+]

标签:

SELECT...FOR UPDATE 语句的语法如下:
SELECT ... FOR UPDATE [OF column_list][WAIT n|NOWAIT][SKIP LOCKED];

其中:
OF 子句用于指定即将更新的列,即锁定特定列的相关的表的行。
WAIT 子句指定等待其他用户释放锁的秒数,防止无限期的等待。

使用“FOR UPDATE WAIT”子句的优点如下:
1.防止无限期地等待被锁定的行;
2.允许应用程序中对锁的等待时间进行更多的控制;
3.对于交互式应用程序非常有用,因为这些用户不能等待不确定;
4.若使用了skip locked,则可以越过锁定的行,不会报告由wait n 引发的‘资源忙’异常报告。

注意:
1.for update nowait和 for update 都会对所查询到得结果集进行加锁,所不同的是,如果另外一个线程正在修改结果集中的数据,for update nowait 不会进行资源等待,只要发现结果集中有些数据被加锁,立刻返回 “ORA-00054错误,内容是资源正忙, 但指定以 NOWAIT 方式获取资源”。
2.of子句在牵连到多个表时,具有较大作用,如不使用of指定锁定的表的列,则所有表的相关行均被锁定,若在of中指定了需修改的列,则只有与这些列相关的表的行才会被锁定。

Oracle 的for update行锁

标签:

原文地址:http://www.cnblogs.com/abelwang/p/4394821.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!