Sobes.tech
Junior — Middle

Já teve experiência com transações aninhadas ao trabalhar com bancos de dados?

sobes.tech IA

Resposta da IA

Transações aninhadas são a capacidade de iniciar outra dentro de uma transação, que pode ser confirmada ou revertida independentemente. A maioria dos SGBDs não suporta diretamente transações aninhadas, mas é possível usar pontos de salvaguarda (savepoints).

Em Go, ao trabalhar com bancos de dados através do pacote database/sql, pode-se usar savepoints para simular transações aninhadas:

// Começar a transação principal
tx, err := db.Begin()
if err != nil {
    // tratamento de erro
}

// Criar um ponto de salvaguarda
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
    // tratamento de erro
}

// Executar operações
// ...

// Em caso de erro, reverter para o ponto de salvaguarda
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")

// No final, confirmar a transação principal
err = tx.Commit()

Dessa forma, é possível controlar partes da transação sem cancelar toda a operação.