Как отменить транзакцию

«Как отменить транзакцию» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Golang транзакцию можно отменить с помощью метода Rollback(). Если не вызвать Commit() или Rollback(), транзакция будет отменена автоматически при закрытии соединения.

Пример:

tx, err := db.Begin()
if err != nil {
    log.Fatal(err)
}

// Выполняем операции
_, err = tx.Exec("INSERT INTO users(name) VALUES(?)", "Alice")
if err != nil {
    tx.Rollback() // Откатываем при ошибке
    return
}

// Если все успешно - коммитим
err = tx.Commit()
if err != nil {
    log.Fatal(err)
}

Важно:

  • Всегда обрабатывайте ошибки при работе с транзакциями
  • Rollback() можно безопасно вызывать даже если транзакция уже завершена
  • Используйте defer tx.Rollback() для автоматического отката в случае паники