回滚后提交事务时会发生什么?

use*_*447 1 c# t-sql sql-server

假设我有一个C#类,该类为数据库创建事务,然后调用存储过程。int = 1如果存在错误,则存储过程返回。假设我们更新一个表,然后返回1,因为SP中某处发生了错误。

然后,这将在c#中引发异常,该异常调用了一种方法来回滚事务-但是在方法的FINALLY块中,我们提交了事务。

由于事务已回滚,当我们调用commit时会发生什么?

Mic*_*zyn 7

如果回滚该事务,则在该事务中进行的所有更改都只是...回滚,取消。因此,至少在没有其他事务等待时,您对finally块的提交将不会执行任何操作。

我不会在commit块中放置commit方法,而是在try块的末尾提交事务,并在catch块中回滚。