Чем отличается SELECT FOR UPDATE от SELECT FOR SHARE?

SELECT FOR UPDATE и SELECT FOR SHARE — это конструкции SQL, используемые для блокировки строк при выборке, но с разными целями и уровнями блокировки.

Короткий ответ

Что ответить на собеседовании

SELECT FOR UPDATE и SELECT FOR SHARE — это конструкции SQL, используемые для блокировки строк при выборке, но с разными целями и уровнями блокировки.

Подробный разбор

Ответ с пояснениями

SELECT FOR UPDATE и SELECT FOR SHARE — это конструкции SQL, используемые для блокировки строк при выборке, но с разными целями и уровнями блокировки.

  • SELECT FOR UPDATE блокирует выбранные строки для последующего обновления. Это означает, что другие транзакции не смогут изменить или заблокировать эти строки до завершения текущей транзакции. Используется, когда планируется изменить данные.
  • SELECT FOR SHARE блокирует строки для чтения, позволяя другим транзакциям также читать эти строки, но запрещая их изменение. Это блокировка более мягкая, предназначена для предотвращения изменения данных во время чтения.

Пример:

BEGIN;
SELECT * FROM accounts WHERE id = 1 FOR UPDATE;
-- теперь можно безопасно обновлять запись
UPDATE accounts SET balance = balance - 100 WHERE id = 1;
COMMIT;

Таким образом, FOR UPDATE используется для эксклюзивной блокировки с целью изменения, а FOR SHARE — для совместного доступа с запретом на изменение.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее