1
3
不要尝试在服务层或ORM中执行嵌套事务。 事务对数据库连接是全局的。除非RDBMS本机支持嵌套事务 和 您的DBAPI公开嵌套事务,您可能会遇到异常情况。 有关详细信息,请参阅我的答案 How do detect that transaction has already been started? 因为您使用的是PHP,所以您的事务范围最多只能是一个请求。所以您应该只使用容器管理的事务,而不是服务层transa。也就是说,在处理请求开始时启动事务,并在完成处理请求时提交(或回滚)。 如果需要回滚的异常发生在嵌套ORM操作的深层,那么使用异常将其冒泡,并让容器(即您的PHP操作控制器)来处理它。 |
2
1
您是否面临交易汇总?这个伪代码和我想你说的相符吗?
在任何时候,嵌套事务的回滚都可能引发异常,并且这些异常在逻辑上会回滚 two-phase commit . 我可能没有得到你想要的东西。 |
TheStoryCoder · Yii2:是否在事务外部执行查询? 6 年前 |
Ali · 将SQL事务用于单个SQL查询[已关闭] 6 年前 |
Marcus Cemes · 选择。。。用于更新在提交后选择旧数据 6 年前 |