假设我们有有记录的客户表
CustId LastName
1 Hamlin
在一个请求中,我们将客户姓氏称为Hamlin,用于custId = 1。我们将姓氏更新为Kathy,但不提交。
另一个请求是它也尝试获取custId = 1的姓氏。它会得到Kathy还是Hamlin。
我的理解是,如果请求都得到不同的连接对象(应该是这种情况),第二个请求将会看到Hamlin。但是如果他们获得相同的连接对象,那么第二个请求对象将看到姓氏为Kathy。 P
租约让我知道上述理解是否正确?
答案 0 :(得分:3)
由于您处于读取提交事务隔离级别(或更高版本,Oracle不支持更低版本),因此您不会看到未提交的其他事务所做的更改。请注意,特别是在可序列化模式下,您的查询可能需要等待其他事务提交或回滚,或者您的事务可能会为您回滚。
Oracle仅支持read committed和serializable(您可以选择,例如,通过SET TRANSACTION ISOLATION LEVEL
);其他数据库系统附加支持read-uncommitted,这将允许您查看更新但尚未提交的值。
答案 1 :(得分:1)
如果您在同一个交易中,您将看到未提交的值(但不会看到其他人/交易)。
任何其他访问都会看到最近阅读的一致视图。