Встречается на собеседованиях • сегодня
Как работает SELECT FOR UPDATE
SELECT FOR UPDATE — это механизм пессимистической блокировки в SQL, который блокирует выбранные строки до завершения текущей транзакции. Другие транзакции не могут изменять или блокировать эти строки до снятия блокировки.
Пример в Java с JDBC:
java
Connection conn = DriverManager.getConnection(...);
conn.setAutoCommit(false);
try {
// Блокируем строку с id = 1
PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM accounts WHERE id = 1 FOR UPDATE");
ResultSet rs = stmt.executeQuery();
// Работаем с заблокированной строкой
if (rs.next()) {
int balance = rs.getInt("balance");
// Обновляем баланс
PreparedStatement update = conn.prepareStatement(
"UPDATE accounts SET balance = ? WHERE id = 1");
update.setInt(1, balance + 100);
update.executeUpdate();
}
conn.commit();
} catch (SQLException e) {
conn.rollback();
}Особенности:
- Блокировка снимается при commit/rollback
- Может вызвать deadlock, если несколько транзакций блокируют ресурсы в разном порядке
- В некоторых СУБД (PostgreSQL) можно добавить NOWAIT для немедленного отказа при невозможности блокировки

Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы