假设我有一个 C# 类,它为数据库创建一个事务,然后调用一个存储过程。int = 1如果出现错误,存储过程将返回。假设我们更新了一个表,但随后返回 1,因为 SP 中的某个地方发生了错误。然后,这会在 C# 中引发异常,该异常会调用一个方法来回滚事务,但在该方法的 FINALLY 块中,我们提交事务。由于事务已回滚,那么当我们调用 commit 时会发生什么?
2 回答
慕运维8079593
TA贡献1876条经验 获得超5个赞
如果您回滚事务,则该事务中所做的所有更改都会...回滚、取消。所以你在finally块中的提交不会做任何事情,至少当你没有其他事务等待时。
我不会将提交方法放在finally块中,我会在try块末尾提交事务并在catch块中回滚。
森林海
TA贡献2011条经验 获得超2个赞
我想建议您在存储过程中也使用事务以及 try catch 块。
我已经确认回滚后我们无法提交相同的事务。
确保另一个事务没有处于等待状态,否则它将被提交。
也不要对finally 块中的事务执行任何操作。始终使用finally块来关闭连接、数据读取器等。
始终在 try 块中提交并在 catch 块中回滚。
- 2 回答
- 0 关注
- 141 浏览
添加回答
举报
0/150
提交
取消