Sobes.tech
Back to questions
Middle+
4

Расскажи про SELECT FOR UPDATE — для чего используется и как работает?

Companies where asked
Веро Трейс

Answer from AI

sobes.tech AI

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

Для чего используется:

  • Чтобы предотвратить состояние гонки при параллельном доступе к данным.
  • Гарантировать, что другие транзакции не смогут изменить или удалить эти строки, пока текущая транзакция не завершится.

Как работает:

  • Когда выполняется SELECT ... FOR UPDATE, СУБД блокирует выбранные строки для записи.
  • Другие транзакции, пытающиеся изменить эти строки, будут ждать освобождения блокировки.
  • Блокировка снимается при коммите или откате транзакции.

Пример:

BEGIN;
SELECT * FROM accounts WHERE id = 1 FOR UPDATE;
-- здесь можно безопасно обновлять данные, зная, что никто другой не изменит эту строку
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;

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