技术开发 频道

Oracle中神秘的DUAL表的探究

    只有一条记录, DUMMY的值是’X’ .很正常啊,没什么奇怪嘛. 好,下面就有奇妙的东西出现了!

    插入一条记录:

SQL>; connect sys as sysdba Connected. SQL>; insert into dual values ( 'Y'); 1 row created. SQL>; commit; Commit complete. SQL>; select count(*) from dual; COUNT(*) ---------- 2

    迄今为止,一切正常. 然而当我们再次查询记录时,奇怪的事情发生了

SQL>; select * from dual; DUMMY ---------- X

    刚才插入的那条记录并没有显示出来 ! 明明DUAL表中有两条记录, 可就是只显示一条!

    再试一下删除 ,狠一点,全删光 !

SQL>; delete from dual; /*注意没有限定条件,试图删除全部记录*/ 1 row deleted. SQL>; commit; Commit complete.

    也只有一条记录被删掉,

SQL>; select * from dual; DUMMY ---------- Y

    为什么会这样呢? 难道SQL的语法对DUAL不起作用吗?带着这个疑问, 我查询了一些ORACLE官方的资料. 原来ORACLE对DUAL表的操作做了一些内部处理,尽量保证DUAL表中只返回一条记录.当然这写内部操作是不可见的 .

0
相关文章