Типичный программист | IT, программирование, разработка, ИИ
IT и технологии · 26 сентября 2026 г.
Почему JOIN с блокировкой строки может вернуть пустоту в PostgreSQL
Почему JOIN с блокировкой строки может вернуть пустоту в PostgreSQL Строка есть, внешний ключ заполнен, но INNER JOIN ничего не возвращает. Это возможно, когда две транзакции одновременно меняют связанную запись. В Read Committed PostgreSQL после снятия блокировки перепроверяет условие JOIN по новой версии строки, но связанную запись не загружает заново. Условие больше не совпадает: INNER JOIN отбрасывает строку, а LEFT JOIN вернёт пустые поля. В подробном разборе автор воспроизводит гонку и проверяет способы защиты.