Sobes.tech
Junior — Middle

Kaip galima atšaukti pakeitimus vienos operacijos metu?

sobes.tech AI

Atsakymas iš AI

Go kalboje dažniausiai naudojamas database/sql paketas darbui su transakcijomis. Norint atšaukti pakeitimus per vieną transakciją, reikia iškviesti Rollback() metodo objektą. Tai dažniausiai daroma klaidos atveju, kad būtų atšaukti visi pakeitimai, padaryti per transakciją.

Pavyzdys:

trx, err := db.Begin()
if err != nil {
    // klaidos apdorojimas
}

// Operacijų vykdymas transakcijoje
_, err = trx.Exec("INSERT INTO users(name) VALUES(?)", "John")
if err != nil {
    trx.Rollback() // transakcijos atšaukimas klaidos atveju
    return err
}

// Jei viskas pavyko, patvirtinkite transakciją
err = trx.Commit()
if err != nil {
    return err
}

Taip, iškvietus trx.Rollback(), bus atšaukti visi pakeitimai, padaryti per šią transakciją.