Sobes.tech
Junior — Middle

Heeft u ervaring met geneste transacties bij het werken met databases?

sobes.tech AI

Antwoord van AI

Geneste transacties zijn de mogelijkheid om binnen één transactie een andere te starten, die onafhankelijk kan worden bevestigd of teruggedraaid. De meeste databasebeheersystemen (DBMS) ondersteunen geen directe geneste transacties, maar je kunt savepoints gebruiken.

In Go, bij het werken met databases via het package database/sql, kun je savepoints gebruiken om geneste transacties te simuleren:

// Begin de hoofdtransactie
tx, err := db.Begin()
if err != nil {
    // foutafhandeling
}

// Maak een savepoint
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
    // foutafhandeling
}

// Voer operaties uit
// ...

// Bij fout, terug naar het savepoint
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")

// Aan het einde, bevestig de hoofdtransactie
err = tx.Commit()

Op deze manier kun je delen van de transactie controleren zonder de hele operatie te annuleren.