在这段代码中,.commit()之后的SomeFunction()会被视为事务的一部分吗?如果爆炸了什么会回滚吗?我需要在插入动态记录后进行进一步处理,并希望在一个大块中完成所有操作。
command.Transaction = transaction
Try
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
command.ExecuteNonQuery()
transaction.Commit()
'do a function call here
SomeFunction()
Catch ex As Exception
transaction.Rollback()
End Try
答案 0 :(得分:0)
不,它不会回滚,因为在调用Somefunction()
时,事务已经被委托。
但是如果SomeFunction
抛出任何异常,catch块仍会在transaction.Rollback()
方法中抛出异常,因为没有活动事务要回滚。
您应该将Somefunction()
调用移到Exception块下面,如果可能的话,将它放在另一个try catch块中。
command.Transaction = transaction
Try
command.CommandText = _
"Insert into Region (RegionID, RegionDescription) VALUES (100, 'Description')"
command.ExecuteNonQuery()
transaction.Commit()
Catch ex As Exception
transaction.Rollback()
End Try
'do a function call here
SomeFunction()