Я работаю над веб-приложением, подключенным к оракулу. У нас есть таблица в оракуле со столбцом «активировано». Только в одной строке этот столбец может иметь значение 1 одновременно. Чтобы обеспечить это, мы использовали уровень изоляции SERIALIZED в Java, однако мы сталкиваемся с ошибкой «невозможно сериализовать транзакцию» и не можем понять, почему.
Нам было интересно, будет ли работать уровень изоляции READ COMMITTED. Итак, мой вопрос заключается в следующем:
Если у нас есть транзакция, которая включает следующий SQL:
SELECT *
FROM MODEL;
UPDATE MODEL
SET ACTIVATED = 0;
UPDATE MODEL
SET ACTIVATED = 1
WHERE RISK_MODEL_ID = ?;
COMMIT;
Учитывая, что более чем одна из этих транзакций может выполняться одновременно, возможно ли, чтобы более чем одна строка MODEL установила флаг активации в 1?
Любая помощь будет оценена по достоинству.