首页 > 解决方案 > 带有 read_committed 隔离的 Oracle ODP.net 事务的 VB.Net 在第一次调用后返回原始值

问题描述

我已经使用 VB.net 和 Oracle ODP.net 设置了一个隔离级别为 READ_COMMITTED 的事务

暗淡 OraTransaction 作为 OracleTransaction = oraConnection.BeginTransaction(IsolationLevel.ReadCommitted)

它在 Function 块中声明,紧接着,一个 FOR 循环运行,其中有几个 Sub 调用在传递 Connection 对象的引用。在执行期间,会发出一个 Select 并更改该表中的两个字段。

第一次迭代,Select 命令,使用 DataAdapter 对象,按预期返回存储的值。在执行期间,字段的值会发生变化,然后我使用 Command 对象执行更新,但尚未提交。

当第二次迭代发出上述选择时,查询仍然返回原始值,而不是更新值。

感谢您的帮助。

J。

标签: vb.netoracletransactionsodp.netisolation-level

解决方案


在寻找另一种方式来持久化更改时,我发现我用来从表中提取数据的 Select 查询中存在错误。

如果我对表执行更新命令,然后执行选择命令,它实际上会返回更新的值。在事务完成之前手动抛出异常时,此时的所有更改都会回滚,并且当事务完成时,它会成功提交更改,这正是我想要实现的。


推荐阅读