Sobes.tech
Middle
38

Wann verwendet man SELECT FOR UPDATE und wann UPDATE ... RETURNING? Geben Sie geschäftliche Beispiele.

Unternehmen wurden gefragt
aic

Antwort von AI

sobes.tech KI

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;