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

Python Middle Без компании
Что такое SELECT FOR UPDATE в SQL
Ответы
`SELECT FOR UPDATE` — это 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`, чтобы запрос сразу завершался с ошибкой, если строки уже заблокированы. Подходит для критичных операций, например, финансовых транзакций.