В отличие от уровня изоляции read committed уровень изоляции repeatable read устанавливает разделяемую блокировку на все данные, которые читаются, и сохраняет эту блокировку, пока транзакция не будет подтверждена или отменена. Следовательно, в этом случае выполнение запроса несколько раз внутри транзакции всегда вернет один и тот же результат. Недостатком такого уровня изоляции является то, что одновременный доступ ухудшается, потому что временной интервал, в течение которого другие транзакции не могут обновлять те же данные, значительно больше, чем в случае read committed.
Этот уровень изоляции не запрещает другим транзакциям добавлять новые строки, которые появляются в последующих чтениях, следовательно, могут появиться фантомные записи.