Sobes.tech
Senior
42

Waarvoor wordt SELECT FOR UPDATE gebruikt? Welke lock-niveau? Zijn er zwakkere opties?

Bedrijven waar gevraagd werd
ТБанк

Antwoord van 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;