2009/10/06

關於已 Insert, Update, Delete 未 Commit 的資料查詢

在 Oracle PL/SQL 中, 針對已 Insert, Update, Delete, 但尚未 Commit 的資料查詢,

有兩種情況:


同一個 Session

已 maintain 但未 Commit 的資料, 其 Select 出來的資料值為 maintain 之後的結果.

若中途有 Rollback 時, 其 Select 出來的資料值為 maintain 之前.


不是同一個 Session

已 maintain 但未 Commit 的資料, 其 Select 出來的資料值, 仍為 maintain 之前的結果.

 範例
-- 1) 建立 Temp Table
create table tom1 (
aa number
, bb varchar2(100)
);

-- 2) 新增一筆資料, 但尚未 commit
insert into tom1 values( 1, 'A' );

-- 3) 查詢有無資料
select *
from tom1


-- 4) commit 之前, 看看其他 DB Session 是否可查到資料


--5) commit 之後, 再看看其他 DB Session 是否可查到資料
commit;



以上, 希望對各位有所幫助.