Sobes.tech
Middle

Транзаксия чист?

sobes.tech AI

Ҷавоб аз AI

Տրանցակցիան՝ դա գործողությունների հաջորդականություն է, որը կատարվում է միավորի տեսքով։ Տվյալների բազաների համատեքստում, տրանցակցիան երաշխավորում է, որ նրա ներսում գտնվող բոլոր գործողությունները հաջողությամբ ավարտվեն միասին, կամ սխալի դեպքում վերացվեն՝ չթողնելով համակարգը անհամապատասխան վիճակում։ Go-ում տրանցակցիաները հաճախ օգտագործվում են տվյալների բազաների հետ database/sql փաթեթի միջոցով։

Օրինակ՝ Go-ում տրանցակցիայի օգտագործման:

// db — *sql.DB օբյեկտ
ctx := context.Background()
tx, err := db.BeginTx(ctx, nil)
if err != nil {
    log.Fatal(err)
}

_, err = tx.ExecContext(ctx, "INSERT INTO users(name) VALUES(?)", "Alice")
if err != nil {
    tx.Rollback()
    log.Fatal(err)
}

err = tx.Commit()
if err != nil {
    log.Fatal(err)
}

Այստեղ, ներմուծման գործողությունները կատարվում են տրանցակցիայի շրջանակում, որը կամ հաստատվում է, կամ վերացվում՝ սխալի դեպքում։