Sobes.tech
Junior — Middle

Volt már tapasztalata beágyazott tranzakciók használatában adatbázisokkal való munka során?

sobes.tech MI

Válasz az MI-től

Beágyazott tranzakciók azok a lehetőségek, hogy egy tranzakción belül egy másikat indítsunk, amely függetlenül megerősíthető vagy visszavonható. A legtöbb adatbázis-kezelő rendszer (DBMS) nem támogatja közvetlenül a beágyazott tranzakciókat, de használhatók savepointok.

Go nyelvben, a database/sql csomag segítségével, az adatbázisokkal való munka során, savepointokat lehet használni a beágyazott tranzakciók szimulálására:

// A fő tranzakció indítása
tx, err := db.Begin()
if err != nil {
    // hiba kezelése
}

// Savepoint létrehozása
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
    // hiba kezelése
}

// Műveletek végrehajtása
// ...

// Hiba esetén visszalépés a savepoint-hez
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")

// A végén a fő tranzakció megerősítése
err = tx.Commit()

Így lehet részeket kontrollálni a tranzakcióban anélkül, hogy az egész műveletet visszavonnánk.