题
最近 这 有人提出了关于一般情况下交易的定义的问题。这个问题的常见答案是事务应该是工作的原子单元
我的问题与这种原子性有关(我认为)我经常在 SQL 存储过程中看到对 ROLLBACK 的显式调用。
明确要求回滚通常是事务处理系统的常见要求吗?
如果提交时出现错误,是否会自动回滚?
解决方案
在 TP 系统中,回滚可以基于以下情况发生:
- 明确的请求,例如调用 ROLLBACK 或类似的
- 任何未捕获的异常或错误。这些可能包括:
- 与参与者失去通信(在分布式事务中)
- 无效或超出范围的值或参数
- 超时,例如由于无法获取锁或用户延迟而导致的。
- 在两阶段提交分布式事务中,参与者之一未能投票提交
回滚不必像您所说的“犯罪”时发生,我想您的意思是“试图提交”。交易在启动后的任何时候都可以回滚。
其他提示
在某些情况下,会自动由于触发器或约束违反发生回滚。在其他国家(如你见过),存储过程本身并回滚。艾登是正确的自动提交变化。
不隶属于 StackOverflow