Sobes.tech
Middle
56

Kada naudoti SELECT FOR UPDATE ir kada UPDATE ... RETURNING? Pateikite verslo pavyzdžių.

Įmonės kur klausė
aic

Atsakymas iš 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;