Короткий ответ По умолчанию PostgreSQL использует Read Committed, при котором каждый отдельный запрос внутри транзакции видит только данные, зафиксированные к моменту его начала; Repeatable Read фиксирует единый снимок данных на момент начала всей транзакции, поэтому повторный такой же запрос внутри неё всегда возвращает одинаковый результат. Как это работает подробнее Оба уровня в PostgreSQL реализованы через MVCC без блокировки читающих транзакций записывающими; разница в моменте фиксации «снимка» — на уровне отдельного оператора или на уровне всей транзакции. Repeatable Read защищает от non-repeatable read и phantom read, но не от всех serialization anomalies, в отличие от Serializable. Пример кода Что использовать на практике Практика. Read Committed подходит для большинства обычных CRUD-операций; Repeatable Read выбирают для отчётов/аналитики, где важно видеть консистентный снимок на момент начала транзакции. Подводные камни Ошибка. Предполагают, что Read Committed защищает от lost update между чтением и