需要嵌套事务的情况是什么?

时间:2011-09-24 08:17:01

标签: database transactions case-study nested-transactions

即使事务是嵌套的,也只有在最外面的事务提交之后才会更新。那么嵌套事务的含义是什么?需要该特性的具体情况是什么?

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:2)

例如假设这样的情况:

Class A
{
 /// props
 save();
}

class B
{
  A a{get;set};
  // other props
  save();
}

现在当你想要保存B时,首先保存A假设在保存A你有一些服务要求进行验证等等,这种情况在保存B(一些验证)所以你需要回滚{{{ 1}}无法验证,你也应该回滚当你无法验证A所以你应该嵌套一个(实际上Separation of concern因此,你可以混合所有的东西,并有一个没有嵌套事务的意大利面条代码)。

答案 2 :(得分:1)

没有任何东西叫做嵌套交易。

SQL考虑的唯一事务是最外层的事务。这是承诺或回滚的那个。嵌套事务在语法上是有效的,这就是全部。假设您从事务内部调用过程,并且该过程本身具有事务,语法允许您嵌套事务,但是唯一有效的事务是最外层事务。

编辑:参考此处:http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-(2630)-nested-transactions-are-real.aspx