Встречается на собеседованиях • сегодня
Что такое SELECT FOR UPDATE
SELECT FOR UPDATE — это SQL-запрос, который блокирует выбранные строки для изменения другими транзакциями до завершения текущей. Используется для предотвращения состояния гонки (race condition) при конкурентном доступе.
Пример на Java с JDBC:
java
Connection conn = DriverManager.getConnection(url, user, password);
conn.setAutoCommit(false); // Начинаем транзакцию
// Блокируем строку с 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 updateStmt = conn.prepareStatement(
"UPDATE accounts SET balance = ? WHERE id = 1"
);
updateStmt.setInt(1, balance + 100);
updateStmt.executeUpdate();
}
conn.commit(); // Разблокируем строки
text
**Важно:**
- Работает только внутри транзакции (`autocommit=false`).
- Блокировка снимается при `commit`/`rollback`.
- Может привести к deadlock, если транзакции блокируют ресурсы в разном порядке.
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
офферы быстрее!
Попробовать бесплатно
Следующий вопрос
Это единственный вопрос по вашему фильтру
как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы