繁体   English   中英

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

[英]What happens when you commit a transaction after rollback?

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

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

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

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

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

我也建议您在存储过程中使用事务以及try catch块。

我已经确认,回滚后我们无法提交同一事务。

确保另一个事务不在等待中,否则它将被提交。

也不要对finally块中的事务做任何事情。 始终使用finally块关闭连接,数据读取器等。

始终在try块中提交,并在catch块中回滚。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM