Sobes.tech
Senior
47

¿Para qué se utiliza SELECT FOR UPDATE? ¿Qué nivel de bloqueo? ¿Existen opciones más débiles?

Empresas donde se preguntó
ТБанк

Respuesta de la IA

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;