У меня есть ситуация, когда я применил декоратор @action.commit_manually к методу, в котором я импортирую информацию, переданную обратно в ответе на запрос http. Мне нужно контролировать принятие и откат в зависимости от того, пройдут ли правила проверки бизнеса или нет.
Теперь, когда у меня возникает какая-то ошибка проверки, у меня есть отдельный метод, в котором я регистрирую ошибку в базе данных. Это действие всегда должно совершаться немедленно, оставляя основную транзакцию в ее текущем состоянии. Однако, что происходит, если я применяю декоратор @action.commit_on_success к процедуре захвата ошибок, моя основная транзакция также фиксируется автоматически. Если я не применяю декоратор @action.commit_on_success, то получаю сообщение об ошибке «Управляемый блок транзакций завершился с ожиданием COMMIT / ROLLBACK», как только вызывается процедура захвата ошибок.
Я использую базу данных MYSQL версии 5.1.49 с использованием механизма хранения INNODB.
Есть ли способ сохранить открытую транзакцию в вызывающей подпрограмме при фиксации транзакции во второй подпрограмме?