同时阅读oracle?

时间:2011-07-01 18:23:05

标签: oracle

假设我们有有记录的客户表

CustId    LastName
1          Hamlin

在一个请求中,我们将客户姓氏称为Hamlin,用于custId = 1。我们将姓氏更新为Kathy,但不提交。

另一个请求是它也尝试获取custId = 1的姓氏。它会得到Kathy还是Hamlin。

我的理解是,如果请求都得到不同的连接对象(应该是这种情况),第二个请求将会看到Hamlin。但是如果他们获得相同的连接对象,那么第二个请求对象将看到姓氏为Kathy。 P

租约让我知道上述理解是否正确?

2 个答案:

答案 0 :(得分:3)

由于您处于读取提交事务隔离级别(或更高版本,Oracle不支持更低版本),因此您不会看到未提交的其他事务所做的更改。请注意,特别是在可序列化模式下,您的查询可能需要等待其他事务提交或回滚,或者您的事务可能会为您回滚。

Oracle仅支持read committed和serializable(您可以选择,例如,通过SET TRANSACTION ISOLATION LEVEL);其他数据库系统附加支​​持read-uncommitted,这将允许您查看更新但尚未提交的值。

答案 1 :(得分:1)

如果您在同一个交易中,您将看到未提交的值(但不会看到其他人/交易)。

任何其他访问都会看到最近阅读的一致视图。