Senior
16
Что такое SELECT FOR UPDATE?
Companies where asked
МВидео/эльдорадо
Answer from AI
sobes.tech AI
SELECT FOR UPDATE — это SQL-конструкция, используемая для блокировки выбранных строк в базе данных с целью предотвращения их изменения другими транзакциями до завершения текущей.
Когда вы выполняете запрос:
SELECT * FROM table_name WHERE condition FOR UPDATE;
- Строки, удовлетворяющие условию, блокируются для записи.
- Другие транзакции не смогут изменить или заблокировать эти строки, пока текущая транзакция не завершится (commit или rollback).
Это используется для реализации механизма оптимистичной или пессимистичной блокировки, чтобы избежать конфликтов при параллельном доступе к данным.
Пример использования:
BEGIN;
SELECT * FROM accounts WHERE account_id = 123 FOR UPDATE;
-- выполнить операции с выбранной записью
UPDATE accounts SET balance = balance - 100 WHERE account_id = 123;
COMMIT;
Таким образом, SELECT FOR UPDATE гарантирует, что данные, с которыми работает транзакция, не будут изменены другими до её завершения.