当 BEGIN TRANS - COMMIT TRANS 在一个 SP 中完成并在 TransactionScope 中执行多个 SP 并在完成范围之前引发错误时会发生什么。
所以伪代码如下
//Using TransactionScope() {
// executing SP1
// executing SP2
// executing SP3
// throw new Exception();
//}
SP2 包含如下代码。
// BEGIN TRANS
// Update Statement1
// Update Statement2
// Update Statement3
// COMMIT TRANS
如果我们假设事务在 SP2 中被提交,会发生什么?
- 一切都回滚
- SP2 中的 3 个语句被提交。其他一切都回滚了吗?
我不知道这是否重要,但以防万一,所有三个 SP 都使用一个连接对象执行,并且连接正在关闭并在两个 ExecuteNonQuery 语句之间再次打开。