Чтобы ответить на конкретный вопрос, я не думаю, что есть какой-либо способ настроить транзакцию в том смысле, что база данных будет делать то, что вы хотите. Подумайте об этом, и вы поймете, почему: нет никакой гарантии, что различные части вашей многостраничной операции будут обрабатываться одним и тем же процессом. Или, скорее всего, даже тот же сервер. Если запрос охватывает соединения с базой данных, как и в этой ситуации, незафиксированные части одного соединения будут невидимы для других соединений.
Помимо уже упомянутых идей, я хотел бы рассмотреть возможность использования одной или нескольких промежуточных таблиц для хранения уже введенных неполных данных. Затем, когда пользователь закончил, одна транзакция может применить данные к постоянным таблицам и удалить промежуточные данные. Неполные данные могут быть очищены по критерию возраста с помощью фонового процесса, если вы уверены, что сеанс был прекращен или удерживается до возвращения пользователя, если это лучше соответствует вашим требованиям.
Я бы склонялся к этому подходу, особенно если бы ожидал регулярных незавершенных транзакций, потому что таким образом мне не придется иметь дело с неполными данными в моих основных моделях.