2015-11-07 62 views
0
create table samp 
    (
    empno number(2), 
    ename varchar2(30), 
    sal number(7,2), 
    dob date 
    ) 
SQL>/

SQL> insert into samp values(1,'MASTAN',24000,'24-JUL-1987'); 

1 row created. 

這裏我沒有提交數據,所以它在重做日誌緩衝區,但是當檢索時,下面的Query如何給出數據?內部是怎樣工作的?好心建議我oracle聲明如何工作?

SQL> SELECT * FROM SAMP; 

    EMPNO ENAME         SAL DOB        
---------- ------------------------------ ---------- --------- 
     1 MASTAN        24000 24-JUL-87 
+1

我認爲你可以做的最好的事情是閱讀11g或12c的Oracle概念指南,該指南介紹了數據庫如何工作的許多細節。這是一個很大的閱讀,但這樣做會回答這個問題,許多人甚至不知道你還有什麼。 –

+0

我想你在談論[撤消](https://docs.oracle.com/cd/E11882_01/server.112/e25494/undo.htm#i1006145),而不是在這裏重做,但無論如何,與你無關'在同一個會話中查詢。如果您詢問另一個會話*而不是*看到該行,則撤消操作與讀取一致性相關,如文檔解釋。 –

回答

1

看來你沒有提交或回滾,所以你從你的SELECT語句中看到正確的結果,因爲它在單一的交易發生。嘗試回滾並檢查結果。理解事務的另一個好方法是嘗試打開兩個單獨的sqlplus shell,並嘗試在一個shell中插入語句,並在另一個shell中選擇語句。