Back to questions
Senior
8
Для чего используется SELECT FOR UPDATE? Какого уровня блокировка? Есть ли более слабые варианты?
Companies where asked
ТБанк
Answer from AI
sobes.tech AI
SELECT FOR UPDATE используется в SQL для блокировки выбранных строк на время транзакции, чтобы предотвратить их изменение другими транзакциями. Это обеспечивает согласованность данных при параллельной работе с базой.
Уровень блокировки — эксклюзивный (write lock) на уровне строк. Другие транзакции не смогут изменить или заблокировать эти строки, пока текущая транзакция не завершится.
Более слабые варианты блокировок:
SELECT FOR SHARE(в некоторых СУБД) — блокирует строки для чтения, позволяя другим транзакциям читать, но не изменять их.- Использование уровней изоляции транзакций, например,
READ COMMITTEDилиREPEATABLE READ, которые обеспечивают разные гарантии без явных блокировок.
Пример:
BEGIN;
SELECT * FROM orders WHERE status = 'pending' FOR UPDATE;
-- обработка
COMMIT;