|
|
原帖由 nyfor 于 2008-9-23 16:15 发表 ![]()
此题目, 可能对于一些新手还不知道 SKIP LOCKED 是干什么用的. 呵呵.
1. 我们看看第一个结果, 应该是 B.
这个小知识点地球人都知道, 就是: 同一个SESSION的锁定可以重复获取.
2. 第二题的结果是 A.
我们分析一下为什么出现这个结果,初看感觉是前面的SESSION锁定了全部的记录.
但我们从第二个SESSION 窗口中执行以下语句:
SQL> select * from t for update skip locked;
ID
----------
2
3
2 rows selected.
可以发现后面两条记录并没有被第一个SESSION锁定.
那为何 select * from t where rownum
在另一个session用同样的语句,因符合条件的记录已被锁定,是否可以认为oracle只做了查询,并未对表做其它动作,第一个session事物结束,第二个session未结束情况下,表是无法被删除? |
|