Sobes.tech
Назад к вопросам
Junior — Middle
108

Какие существуют варианты использования конструкции SELECT FOR UPDATE в базах данных?

Компании, где спрашивали
Indrive

Ответ от нейросети

sobes.tech AI

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

  • Обеспечение целостности данных при конкурентном доступе. Например, при обновлении баланса счета сначала блокируются нужные строки, чтобы избежать гонок.
  • Реализация механизма блокировки на уровне приложения. Позволяет гарантировать, что другие транзакции не смогут изменить или удалить выбранные записи.
  • Использование с различными режимами блокировок. В некоторых СУБД можно указать NOWAIT или SKIP LOCKED для управления поведением при блокировках.

Пример в Go с использованием базы PostgreSQL:

row := db.QueryRow("SELECT balance FROM accounts WHERE id = $1 FOR UPDATE", accountID)
// Далее можно безопасно обновлять баланс, зная, что строка заблокирована