Sobes.tech
Junior — Middle

¿Cuáles son las opciones de uso de la construcción SELECT FOR UPDATE en bases de datos?

sobes.tech AI

Respuesta de la IA

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

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

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

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