Ответ
Технически — да, но на практике он ведёт себя идентично READ COMMITTED.
В PostgreSQL реализация уровней изоляции основана на Multiversion Concurrency Control (MVCC). Это означает, что каждая транзакция видит снимок данных (snapshot) на момент своего начала. Механизм MVCC физически предотвращает чтение "грязных" данных (незафиксированных изменений другой транзакции).
Что происходит на практике:
Если вы установите SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;, PostgreSQL не будет выдавать ошибку, но внутренне будет использовать поведение уровня READ COMMITTED.
Проверка:
-- Сессия 1
BEGIN;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
UPDATE accounts SET balance = 1000 WHERE id = 1; -- Не коммитим!
-- Сессия 2
BEGIN;
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SELECT balance FROM accounts WHERE id = 1; -- Увидит СТАРОЕ значение, а не 1000.
-- Поведение соответствует READ COMMITTED, а не истинному READ UNCOMMITTED.
Рекомендация: В PostgreSQL просто используйте уровень по умолчанию READ COMMITTED или более строгий REPEATABLE READ / SERIALIZABLE, если нужны соответствующие гарантии. Указание READ UNCOMMITTED является избыточным и может ввести в заблуждение.