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;