Ответ
В 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()для автоматического отката в случае паники