Ami*_*abh 3 oracle ado.net plsql transactions
我有两个PL/SQL存储过程,每个过程处理自己的事务(如果出错,则开始/提交和回滚).来自.Net代码我将这两个SP称为如下所示.
using (TransactionScope ts = new TransactionScope())
{
CallSP1();
CallSP2().
ts.SetComplete();
}
Run Code Online (Sandbox Code Playgroud)
如果我的SP2调用失败,它将回滚CallSP1()所做的更改吗?如果它没有回滚那么这是否意味着更好地从.Net应用程序而不是在存储过程内处理事务?
Vin*_*rat 10
如果第一个存储过程SP1发出提交,那么它已经进行的任何更改都将是永久性的.在这种情况下,如果SP2失败,SP1将进行的更改将不会回滚.
IMO调用应用程序应该是处理事务逻辑的应用程序,即不在PL/SQL过程中发出提交或回滚.让错误传播到调用应用程序,这样PL/SQL引擎将只回滚失败过程而不是整个事务完成的工作.
让调用应用程序决定在出现错误时要做什么(重试,提交半工作?或回滚).
| 归档时间: |
|
| 查看次数: |
2983 次 |
| 最近记录: |