Что такое SELECT FOR UPDATE?

Middle
568 просмотров
AFK Offer AI

SELECT FOR UPDATE — выбирает строки и блокирует их до конца транзакции. Другая транзакция, пытающаяся обновить или заблокировать те же строки, будет ждать. Классический паттерн: BEGIN → SELECT ... FOR UPDATE → обработка → UPDATE → COMMIT. Без FOR UPDATE между SELECT и UPDATE другая транзакция может изменить данные (lost update). В Go: внутри pgx.BeginTx делаешь QueryRow с FOR UPDATE, потом Exec для обновления. FOR UPDATE SKIP LOCKED — не ждать, а пропустить заблокированные строки (идеально для очередей задач).

Следующий вопрос

Что такое higher-order function?