Sobes.tech
Senior
43

Pentru ce se folosește SELECT FOR UPDATE? Ce nivel de blocare? Există variante mai slabe?

Companiile au fost întrebate
ТБанк

Răspuns de la 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;