Sobes.tech
Middle
44

Wanneer gebruik je SELECT FOR UPDATE en wanneer UPDATE ... RETURNING? Geef zakelijke voorbeelden.

Bedrijven waar gevraagd werd
aic

Antwoord van AI

sobes.tech AI

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

UPDATE ... RETURNING одновременно обновляет строки и возвращает изменённые данные, что удобно, когда нужно получить результат обновления без дополнительного запроса.

Бизнес-примеры:

  • SELECT FOR UPDATE: В банковской системе при переводе денег сначала выбираются и блокируются записи счетов отправителя и получателя, чтобы избежать одновременных изменений баланса.

  • UPDATE ... RETURNING: В системе бронирования билетов обновляется статус места на "забронировано" и сразу возвращается информация о брони, чтобы показать пользователю подтверждение.

Пример с SELECT FOR UPDATE:

BEGIN;
SELECT balance FROM accounts WHERE id = 123 FOR UPDATE;
-- вычисления
UPDATE accounts SET balance = balance - 100 WHERE id = 123;
COMMIT;

Пример с UPDATE ... RETURNING:

UPDATE tickets SET status = 'reserved' WHERE id = 456 RETURNING id, status, reserved_at;