选择陈述可见哪些变化?

时间:2013-10-06 23:36:51

标签: oracle transactions

查看同一桌子上的以下交易:

enter image description here

T1 SELECTs有哪些变化?

2 个答案:

答案 0 :(得分:1)

对于Oracle,具有默认隔离级别(Read Committed)

T1, first select  -> Does not see any changes
T1, second select -> Does not see any changes by T2
T1, third select  -> Does not see any changes by T3, but sees changes by T2 (phantom read)
T1, forth select  -> Sees all the changes (phantom read)

因此,T1基本上可以看到任何提交的内容。

答案 1 :(得分:0)

Oracle显式支持READ COMMITTED,它声明事务可能只读取已在数据库中提交的数据。没有脏读(读取未提交的数据)。

在上面的场景中,T1只是SELECT数据,T2操纵数据(更新,删除)和T3插入数据。根据事务中的COMMIT时序,不会发生死锁,T1下方将显示以下内容:

第三个SELECT:T2的变化将是可见的(但不是T3)。 第四选择:从T2和T3的变化。 其他查询无法使用的更改(第一和第二)。

在任何事务中的COMMIT之前,由于Oracle默认的ISOLATTION Level设置,数据将不会对任何其他事务可见。