select ... for update [of ...][nowait | wait integer]
注意:
1>. lock操作只有在事务提交后才释放锁;同样的道理,对于一个游标使用了for update打开后,虽然关闭了游标,但这个lock也仍是存在
的,直到事务结束(commit/rollback)。
2>. of 的注意点:
下面的例子,如果没有"of e.salary"那么表employees和表departments中与该查询相关的行将会lock。添加了"of e.salary"后只会lock 表
employees与该查询相关的行。
select e.employee_id, e.salary, e.commission_pct
from employees e join departments d
using (department_id)
where job_id = 'sa_rep'
and location_id = 2500
for update of e.salary;
3>. nowait指在执行"select ... for update"时其他事务修改了该查寻的结果但还没有提交,此时将立即返回如下结果:
ora-00054: resource busy and acquire with nowait specified
如果不使用nowait等项,默认为等待(wait)其他事务提交后在返回结果。
4>. wait integer,与nowait的功能相似,但可以等待用户指定的秒数。如:"wait 3"等待3秒后,其他事务还没有提交将返回如下结果:
ora-30006: resource busy; acquire with wait timeout expired
阅读(2201) | 评论(0) | 转发(0) |