【发布时间】:2011-10-06 16:26:09
【问题描述】:
我有一种情况,我将@transaction.commit_manually 装饰器应用于我正在导入在 http 请求响应中传回的信息的方法。我需要根据业务验证规则是通过还是失败来控制提交和回滚。
现在,当我遇到某种验证失败时,我有一个单独的方法可以将错误记录到数据库中。此操作应始终立即提交,同时将主事务保持在当前状态。但是,如果我将 @transaction.commit_on_success 装饰器应用于错误捕获例程,我的主要事务也会自动提交。如果我不应用 @transaction.commit_on_success 装饰器,那么一旦调用错误捕获例程,我就会收到“事务托管块以挂起的 COMMIT/ROLLBACK 结束”错误。
我正在使用 MYSQL 数据库版本 5.1.49,使用存储引擎 INNODB。
有没有办法在第二个例程中提交事务时,在调用例程中保留打开的事务?
【问题讨论】:
标签: mysql django transactions