【发布时间】:2016-02-13 22:48:15
【问题描述】:
如果我在事务中成功执行了一些 SQL,是否会发生提交失败?可能的原因是什么?它是否会因执行的查询而失败,或者仅仅是由于一些数据库方面的问题?
问题出现是因为我需要判断在测试中提交事务是否有意义,或者是否“足够安全”可以在每个测试用例之后回滚。
【问题讨论】:
-
是的,事务可能在提交时失败,例如:使用了可延迟的约束。
-
或者如果您在提交期间耗尽了资源,或者如果服务器出现故障,或者其他什么。处理这个问题的正确方法是使用 2 Phase Commits。您准备好提交,一旦准备好,您甚至可以在服务器重新启动后提交事务 - 所有数据仍然存在。
-
我关心应用程序问题。因此,如果服务器出现故障或资源不足,那当然是个问题,但我不想测试。我更关心导致提交失败的基于应用程序的问题。
标签: postgresql testing transactions