Sobes.tech
Junior — Middle

Poți menționa erorile tipice făcute în timpul utilizării tranzacțiilor?

sobes.tech AI

Răspuns de la AI

Erori comune în lucrul cu tranzacțiile în Go:

  1. Ignorarea implicită a erorilor — uitarea verificării erorilor după operațiile cu tranzacția (de exemplu, după tx.Commit() sau tx.Rollback()), ceea ce poate duce la probleme neobservate.

  2. Lipsa rollback-ului în caz de erori — dacă apare o eroare în timpul tranzacției, neapelarea tx.Rollback(), ceea ce poate duce la blocări sau inconsistențe ale datelor.

  3. Apel dublu la Commit sau Rollback — apelarea repetată a acestor metode poate provoca panică sau eroare.

  4. Menținerea tranzacției deschise prea mult timp — o tranzacție deschisă prea mult timp blochează alte operații și scade performanța.

  5. Utilizarea tranzacției fără context — netransmiterea context.Context către metode, ceea ce complică anularea sau timeout-urile.

Exemplu de utilizare corectă a unei tranzacții:

ctx := context.Background()
tx, err := db.BeginTx(ctx, nil)
if err != nil {
    // tratarea erorii
}

// Executarea operațiilor
if _, err := tx.ExecContext(ctx, "INSERT INTO ..."); err != nil {
    tx.Rollback()
    return err
}

if err := tx.Commit(); err != nil {
    return err
}

Este important să tratați întotdeauna erorile și să încheiați corect tranzacția.