Встречается на собеседованиях • сегодня

Что такое 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, если транзакции блокируют ресурсы в разном порядке.
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы