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.