.net SqlTransaction和嵌套事务
是否可以使用SqlTransaction类创建嵌套事务?如果是,我需要注意哪些规则/限制?是的,可以创建嵌套事务 例如: transaction A do action #1 transaction B do action #2 transaction C do action #3 rollback transaction B transaction D do action #4 commit transaction D transaction E do action #5 commit transaction A.net SqlTransaction和嵌套事务,.net,sql,ado.net,sqltransaction,.net,Sql,Ado.net,Sqltransaction,是否可以使用SqlTransaction类创建嵌套事务?如果是,我需要注意哪些规则/限制?是的,可以创建嵌套事务 例如: transaction A do action #1 transaction B do action #2 transaction C do action #3 rollback transaction B transaction D do action #4 commit transaction D transaction E do action #5 commit t
在这个序列中,只有操作1、4和5实际发生。嵌套事务除了我所知道的事务本身的限制之外没有其他限制。必须理解的唯一一点是,在提交嵌套事务的顶层之前,实际上不会提交任何内容。是的,可以创建嵌套事务 例如: transaction A do action #1 transaction B do action #2 transaction C do action #3 rollback transaction B transaction D do action #4 commit transaction D transaction E do action #5 commit transaction A
在这个序列中,只有操作1、4和5实际发生。嵌套事务除了我所知道的事务本身的限制之外没有其他限制。唯一需要了解的是,在提交嵌套事务的顶层之前,实际上不会提交任何内容。不幸的是,SQL Server忽略了内部事务的提交 您可以嵌套事务,但请注意,该行为可能不是您所期望的 在最外层事务提交之前,不会提交任何内容 所以,在下面
transaction A
Query A
transaction B
Query B
Commit B
Rollback A
查询B的结果实际上没有提交到数据库。不幸的是,SQL Server忽略了内部事务的提交 您可以嵌套事务,但请注意,该行为可能不是您所期望的 在最外层事务提交之前,不会提交任何内容 所以,在下面
transaction A
Query A
transaction B
Query B
Commit B
Rollback A
查询B的结果实际上没有提交到数据库。您可以在SqlTransaction类上使用Savestring savePointName方法。这将创建一个保存点,您可以在事务中回滚到该保存点。因此,如果部分代码失败,您将回滚到上一个保存点并重新开始
例如:
SqlTransaction tran = _transaction as SqlTransaction;
tran.Save(savePointName);
当你失败时,你会:
tran.Rollback(savePointName);
你可以想做多少次就做多少次。这将解决嵌套事务的问题。您可以在SqlTransaction类上使用Savestring savePointName方法。这将创建一个保存点,您可以在事务中回滚到该保存点。因此,如果部分代码失败,您将回滚到上一个保存点并重新开始
例如:
SqlTransaction tran = _transaction as SqlTransaction;
tran.Save(savePointName);
当你失败时,你会:
tran.Rollback(savePointName);
你可以想做多少次就做多少次。这将解决嵌套事务的问题。这实际上是我想要的行为,但是如何使用SqlTransaction类来表达它?这实际上是我想要的行为,但是如何使用SqlTransaction类来表达它?