Lina M
Это, скорее всего, не совсем относится к изначальной теме. Но, возможно, внесёте ясность в одном моменте.
Как сделать лучше/правильнее/оптимальнее:
1. Проверить одним запросом существование записи в таблице (exists scalar) → добавить запись в таблицу, если её нет, если словили integrity error
обработать
2. Сразу сделать добавление записи в таблицу, и если словили integrity error
обработать
Я не знаю, что у Вас там конкретно за процесс, как я могу ответить?
Суть совета с переподключением в том, что на первом этапе выбираются исходные данные из БД для request, а потом, уже в новом соединении, проверяется, находится ли БД всё в том же "состоянии", когда был нужен именно такой request, и, если да — результаты записываются; а если нет ("не повезло") — выбрасываются.
Это подход optimistic locking, в общем.