Junior — Middle
Da li ste imali iskustva sa ugnježdenim transakcijama prilikom rada sa bazama podataka?
sobes.tech АИ
Одговор од АИ
Ugnježdene transakcije su mogućnost da unutar jedne transakcije započnete drugu, koja može biti potvrđena ili poništena nezavisno. Većina sistema za upravljanje bazama podataka (DBMS) ne podržava direktno ugnježdene transakcije, ali se mogu koristiti savepoints (tačke čuvanja).
U Go programskom jeziku, radeći sa bazama podataka putem paketa database/sql, možete koristiti savepoints za simulaciju ugniježđenih transakcija:
// Početak glavne transakcije
tx, err := db.Begin()
if err != nil {
// obrada greške
}
// Kreiranje savepointa
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
// obrada greške
}
// Izvršavanje operacija
// ...
// U slučaju greške, vraćanje na savepoint
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")
// Na kraju, potvrda glavne transakcije
err = tx.Commit()
Na ovaj način, možete kontrolisati delove transakcije, a da ne otkazujete celu operaciju.