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.