Sobes.tech
Back to questions
Middle+
8

Что такое SELECT FOR UPDATE и зачем он нужен?

Companies where asked
Magnit Tech

Answer from AI

sobes.tech AI

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

Это полезно для предотвращения проблем с конкурентным доступом, например, при обновлении баланса счёта или инвентаря, чтобы избежать состояния гонки.

Пример использования:

BEGIN;
SELECT * FROM accounts WHERE id = 1 FOR UPDATE;
-- здесь можно безопасно обновлять данные
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;

В Go с использованием database/sql это обычно делается внутри транзакции, чтобы обеспечить атомарность операций.