Назад к вопросам
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)
// Далее можно безопасно обновлять баланс, зная, что строка заблокирована