Что такое SELECT FOR UPDATE? Когда применять в Go?

Ответ

SELECT FOR UPDATE блокирует выбранные строки до конца транзакции. Другая транзакция с FOR UPDATE или изменением этих строк будет ждать. Используют для пессимистичной блокировки при "прочитал-изменил-записал". FOR UPDATE SKIP LOCKED - пропускать заблокированные строки (очереди задач). В Go выполняют в той же транзакции перед UPDATE.

tx.QueryRowContext(ctx, "SELECT * FROM orders WHERE id = $1 FOR UPDATE", id)
// затем UPDATE в той же tx
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.