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.