Встречается на собеседованиях • сегодня
Работал ли с SELECT FOR UPDATE
Да, работал. SELECT FOR UPDATE — это механизм пессимистичной блокировки в SQL, который позволяет заблокировать выбранные строки для других транзакций до завершения текущей. Используется, когда нужно предотвратить "lost update" или конфликты при параллельном изменении данных.
Пример на Java с JDBC:
java
Connection conn = dataSource.getConnection();
try {
conn.setAutoCommit(false);
// Блокируем строку для обновления
PreparedStatement stmt = conn.prepareStatement(
"SELECT * FROM accounts WHERE id = ? FOR UPDATE"
);
stmt.setInt(1, accountId);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
// Модифицируем данные
double balance = rs.getDouble("balance");
// ... выполняем операции
}
conn.commit();
} catch (SQLException e) {
conn.rollback();
} finally {
conn.close();
}Важно помнить:
- Блокировка действует до конца транзакции (commit/rollback)
- Может вызывать дедлоки, если порядок блокировок не согласован
- В Spring можно использовать
@Transactionalс изоляциейSERIALIZABLEили ручное управление черезJdbcTemplate

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