Sobes.tech
Junior — Middle

როგორ შეიძლება ერთ ტრანზაქციაში ცვლილებები უკან დაბრუნდეს?

sobes.tech AI

პასუხი AI-სგან

Go ენაში ტრანზაქციებთან მუშაობისთვის ჩვეულებრივ გამოიყენება database/sql პაკეტი. ერთ ტრანზაქციის ფარგლებში განხორციელებული ცვლილებების გაუქმებისთვის საჭიროა ტრანზაქციის ობიექტის Rollback() მეთოდის გამოძახება. ეს ჩვეულებრივ ხდება შეცდომის შემთხვევაში, რათა გაუქმდეს ტრანზაქციის ფარგლებში განხორციელებული ყველა ცვლილება.

მაგალითი:

trx, err := db.Begin()
if err != nil {
    // შეცდომის დამუშავება
}

// ოპერაციების განხორციელება ტრანზაქციაში
_, err = trx.Exec("INSERT INTO users(name) VALUES(?)", "John")
if err != nil {
    trx.Rollback() // ტრანზაქციის გაუქმება შეცდომის დროს
    return err
}

// თუ ყველაფერი წარმატებით დასრულდა, დაადასტურეთ ტრანზაქცია
err = trx.Commit()
if err != nil {
    return err
}

ამ გზით, trx.Rollback() გამოძახება გაუქმებს მიმდინარე ტრანზაქციის ფარგლებში განხორციელებულ ყველა ცვლილებას.