摘要:COMMIT的字面意思是“提交、完成”。从一个工作流的角度来看,你开启了一个事务,执行了一些操作(即使是只读查询),然后正常地、成功地结束了这项工作。使用 COMMIT可以清晰地表明“此事务已按预期顺利完成,没有遇到任何错误”。
语义上的“成功结束”
COMMIT的字面意思是“提交、完成”。从一个工作流的角度来看,你开启了一个事务,执行了一些操作(即使是只读查询),然后正常地、成功地结束了这项工作。使用 COMMIT可以清晰地表明“此事务已按预期顺利完成,没有遇到任何错误”。
在日志和监控中,一个被提交的事务通常被视为一次成功的操作。而 ROLLBACK则常常与“失败”、“撤销”、“异常”等概念关联。
与异常处理模式保持一致
在标准的编程模式中,TRY { ... } CATCH { ... }结构被广泛使用。如果在 TRY块中的所有操作都成功,则提交 (COMMIT);如果在 TRY块中捕获到任何异常,则回滚 (ROLLBACK)。
如果一个事务只有查询,没有错误发生,那么程序流会自然地走到 COMMIT语句。从一致性来讲,使用 COMMIT是顺理成章的。
事务中包含 FOR UPDATE等加锁操作ROLLBACK安全第一。明确释放锁,避免阻塞。事务中仅为普通 SELECT查询COMMIT(可接受)符合“成功完成”的语义。事务中仅为普通 SELECT查询ROLLBACK (也不错)表达“无变更意图”。最佳实践使用 READ ONLY事务或不用事务意图明确,从根本上避免了歧义和争论。来源:阿橘的小九九