User SCOTT executes the following command on the EMP table but has not issued COMMIT,ROLLBACK, or any data definition language (DDL)ommand:
SQL> SELECT job FROM emp
2 WHERE job='CLERK' FOR UPDATE OF empno;
SCOTT has opened another session to work with the database. Which three operations would wait when issued in SCOTT's second session?(Choose three.)
A. LOCK TABLE emp IN SHARE MODE;
B. LOCK TABLE emp IN EXCLUSIVE MODE;
C. DELETE FROM emp WHERE job='MANAGER';
D. INSERT INTO emp(empno,ename) VALUES(1289,'Dick');
E. SELECT job FROM emp WHERE job='CLERK' FOR UPDATE OF empno;
------------------------------------------------------------------
上题答案给的是A、B、E,不过我经过试验发现A操作不会等待,答案应该只有B、E啊
不知道大家还发现没发现有错误答案的题呢?

最新回复
tsingchun_her (2008-10-28 22:48:08)
2 WHERE job='CLERK' FOR UPDATE OF empno;
在sqlplus中执行,上面语句不会锁定相关行。如果在青蛙中执行就会锁定相关行,那么答案A就是正确的
tsingchun_her (2008-10-28 22:55:15)
ljm0211 (2008-10-29 15:09:27)
2 WHERE job='CLERK' FOR UPDATE OF empno;
这条SQL会产生一个满足条件行上的排他锁,和一个emp表上的共享锁,在Sqlplus中执行也会锁定(排他锁)相关行的啊
只要不是emp表的排他锁,A就不会出现Wait
我是这么理解的,还请高手赐教。
tsingchun_her (2008-11-06 17:02:17)
2 WHERE job='CLERK' FOR UPDATE OF empno
sqlplus中执行这一句没有产生排他锁,会出现楼主说的那种情况。
是不是我们对英文理解错误呢?
题目中所指的second sesion到底是那个session?如果是指SQL> SELECT job FROM emp
2 WHERE job='CLERK' FOR UPDATE OF empno这一句的话,毫无疑问答案有三个。
[ 本帖最后由 tsingchun_her 于 2008-11-6 17:04 编辑 ]
ljm0211 (2008-11-06 17:14:58)
steven_hua (2008-11-11 11:54:40)
QUOTE:
谁能解释下下为什么大TOAD中会出现等待?steven_hua (2008-11-11 12:07:34)
session1:
SQL> conn scott/tiger@orcl
Connected.
SQL> select job from emp where job='CLERK' for update of empno;
JOB
---------
CLERK
CLERK
CLERK
CLERK
SQL>
session2:产生等待
SQL> conn scott/tiger@orcl
Connected.
SQL> lock table emp in share mode;