Sobes.tech
Junior — Middle

Դուք ունեցել եք փորձ տվյալների բազաների հետ աշխատելիս ներսի գործարքների օգտագործման մասին?

sobes.tech AI

Պատասխան AI-ից

Ներքաշված գործարքները հնարավորությունն են սկսել մեկ գործարքի ներսում մյուսը, որը կարող է հաստատվել կամ չեղարկվել անկախ։ Ամենաշատ բազայի կառավարման համակարգերը (DBMS) չեն աջակցում ուղղակիորեն ներքաշված գործարքներին, բայց կարող են օգտագործվել savepoints (խնայողական կետեր):

Go լեզվով, աշխատելով տվյալների բազաների հետ database/sql փաթեթի միջոցով, կարելի է օգտագործել savepoints՝ նմուշառելու ներքաշված գործարքները:

// Հիմնական գործարքը սկսում ենք
tx, err := db.Begin()
if err != nil {
    // սխալի մշակումը
}

// Ստեղծում ենք savepoint
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
    // սխալի մշակումը
}

// Կատարում ենք գործողություններ
// ...

// Սխալի դեպքում վերադառնում ենք savepoint-ին
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")

// Վերջում հաստատում ենք հիմնական գործարքը
err = tx.Commit()

Այսպիսով, կարող եք վերահսկել գործարքի մասնիկները, առանց ամբողջ գործողությունը չեղարկելու։