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