Запись документа при неудачном проведении в транзакции

1. Kudus 13.12.24 17:01 Сейчас в теме
Здравствуйте! Разрабатываю http сервис по получению поступлений в УХ. В базу приходит json, в котором могут быть данные по нескольким документам. При неудачной попытке провести документ нужно его просто записать, но не могу понять как можно сделать это в транзакции, ведь если мы будем проводить внутри попытки ,то при получении исключения транзакция отменится. Искал на форумах пару дней, но так и не смог найти решения.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. RustamZz 13.12.24 17:17 Сейчас в теме
(1) Делать транзакцию на каждый документ отдельно.
3. Kudus 13.12.24 19:30 Сейчас в теме
(2) Какой тогда смысл от транзакции, если для каждого документа ее делать отдельно. Я использую транзакцию для того, чтобы при ошибке записи какого либо документа данные про остальным документам не сохранялись и запрос возвращал сообщение с ошибкой о записи документа
4. spacecraft 13.12.24 19:58 Сейчас в теме
(3)
чтобы при ошибке записи какого либо документа данные про остальным документам не сохранялись

В исключении сохранять в отдельный массив (для примера). После отмены транзакции пытаться записать.
5. Kudus 14.12.24 10:40 Сейчас в теме
(4)
После отмены транзакции пытаться

Но при попадании в исключение ведь отмениться транзакция и не будут сохранены документы, которые могут провестись?
6. user1936660 14.12.24 10:57 Сейчас в теме
(5)
при попадании в исключение ведь отмениться транзакция
Как напишешь, так и будет.
7. user2107191 14.12.24 10:57 Сейчас в теме
(5) Циклы - для слабаков!
8. SlavaKron 14.12.24 11:57 Сейчас в теме
По-моему, это никак не сделать, если пытаться проводить с первой попытки.

мы не сможем сохранить цепочку вида:
Документ1 - Проведен
Документ2 - Проведен
Документ3 - ошибка проведения
Документ3 - Записан

При этом отменить, например, такую цепочку:
Документ1 - Проведен
Документ2 - Проведен
Документ3 - ошибка проведения
Документ3 - ошибка записи
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот