042,168道题库上的一道题答案好像不对

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)

    要看第一条语句用什么工具执行的。如果SELECT job FROM emp
      2 WHERE job='CLERK' FOR UPDATE OF empno;
    在sqlplus中执行,上面语句不会锁定相关行。如果在青蛙中执行就会锁定相关行,那么答案A就是正确的
  • tsingchun_her (2008-10-28 22:55:15)

    would的意思是可能,不是必定。
  • ljm0211 (2008-10-29 15:09:27)

    SQL> SELECT job FROM emp
      2 WHERE job='CLERK' FOR UPDATE OF empno;
    这条SQL会产生一个满足条件行上的排他锁,和一个emp表上的共享锁,在Sqlplus中执行也会锁定(排他锁)相关行的啊
    只要不是emp表的排他锁,A就不会出现Wait

    我是这么理解的,还请高手赐教。
  • tsingchun_her (2008-11-06 17:02:17)

    SQL> SELECT job FROM emp
      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:

    原帖由 tsingchun_her 于 2008-10-28 22:48 发表
    要看第一条语句用什么工具执行的。如果SELECT job FROM emp
      2 WHERE job='CLERK' FOR UPDATE OF empno;
    在sqlplus中执行,上面语句不会锁定相关行。如果在青蛙中执行就会锁定相关行,那么答案A就是正确的
    谁能解释下下为什么大TOAD中会出现等待?
  • steven_hua (2008-11-11 12:07:34)

    不知大家是怎么操作的,我在sqlplus 中做lock table emp in share mode 是产生等待的!!!???
    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;