Sobes.tech
Junior — Middle

Ați avut experiență cu tranzacții imbricate atunci când lucrați cu baze de date?

sobes.tech AI

Răspuns de la AI

Tranzacțiile imbricate reprezintă posibilitatea de a începe o altă tranzacție în interiorul uneia, care poate fi confirmată sau anulată independent. Majoritatea sistemelor de gestionare a bazelor de date (DBMS) nu suportă direct tranzacțiile imbricate, dar se pot folosi puncte de salvare (savepoints).

În Go, lucrând cu bazele de date prin pachetul database/sql, se pot folosi savepoints pentru a simula tranzacțiile imbricate:

// Începem tranzacția principală
tx, err := db.Begin()
if err != nil {
    // tratarea erorii
}

// Creăm un punct de salvare
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
    // tratarea erorii
}

// Executăm operații
// ...

// În caz de eroare, revenim la punctul de salvare
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")

// La final, confirmăm tranzacția
err = tx.Commit()

Astfel, putem controla părți ale tranzacției fără a anula întreaga operație.