Sobes.tech
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;