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

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

Короткий ответ

Что ответить на собеседовании

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

Подробный разбор

Ответ с пояснениями

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 это обычно делается внутри транзакции, чтобы обеспечить атомарность операций.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее