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

Что такое SELECT FOR UPDATE в SQL

SELECT FOR UPDATE — это SQL-запрос, который блокирует выбранные строки до завершения текущей транзакции, предотвращая их изменение другими транзакциями. Используется для обеспечения согласованности данных при конкурентном доступе.

Пример:

sql
BEGIN;
SELECT * FROM accounts WHERE user_id = 1 FOR UPDATE;
-- Другие транзакции не смогут изменять эти строки до COMMIT/ROLLBACK
UPDATE accounts SET balance = balance - 100 WHERE user_id = 1;
COMMIT;

Нюансы:

  • Блокировка снимается при COMMIT или ROLLBACK.
  • Может привести к взаимоблокировкам (deadlocks), если транзакции запрашивают блокировки в разном порядке.
  • В PostgreSQL можно добавить NOWAIT, чтобы запрос сразу завершался с ошибкой, если строки уже заблокированы.

Подходит для критичных операций, например, финансовых транзакций.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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