OracleTransaction.Rollback() 是否取代存储过程中的提交?
Does the OracleTransaction.Rollback() supercedes commit in stored procedure?
假设我的代码包含从 C# 代码执行的多个存储过程。每个存储过程都有一个提交和一个异常情况下的回滚。异常在这些存储过程中处理,return 处理错误消息。
如果我有一个 OracleTransaction.BeginTransaction() "running",在执行存储过程时在同一连接对象上,c# 代码中的 OracleTransaction.Rollback() 实际上会回滚提交的数据通过先前执行的存储过程。
逻辑如下:
- 打开连接
- 开始交易
- 执行一个存储过程(里面有commit)
- 如果一切正常,执行另一个存储过程(提交)。如果不是,则回滚以前的存储过程并完全停止。
- 没有错误提交事务。
谢谢。
一个COMMIT
结束当前事务,一个新的事务从下一个可执行的SQL语句开始。因此,后续 ROLLBACK
只能撤消自 以来 前一个 COMMIT
所做的更改,但不能撤消 在 之前所做的更改。
假设我的代码包含从 C# 代码执行的多个存储过程。每个存储过程都有一个提交和一个异常情况下的回滚。异常在这些存储过程中处理,return 处理错误消息。
如果我有一个 OracleTransaction.BeginTransaction() "running",在执行存储过程时在同一连接对象上,c# 代码中的 OracleTransaction.Rollback() 实际上会回滚提交的数据通过先前执行的存储过程。
逻辑如下:
- 打开连接
- 开始交易
- 执行一个存储过程(里面有commit)
- 如果一切正常,执行另一个存储过程(提交)。如果不是,则回滚以前的存储过程并完全停止。
- 没有错误提交事务。 谢谢。
一个COMMIT
结束当前事务,一个新的事务从下一个可执行的SQL语句开始。因此,后续 ROLLBACK
只能撤消自 以来 前一个 COMMIT
所做的更改,但不能撤消 在 之前所做的更改。