Sobes.tech
Junior — Middle

Mal(a) ste skúsenosti s vnorenými transakciami pri práci s databázami?

sobes.tech AI

Odpoveď od AI

Vnorené transakcie sú možnosťou začať inú transakciu v rámci jednej, ktorá môže byť potvrdená alebo zrušená nezávisle. Väčšina systémov správy databáz (DBMS) nepodporuje priamo vnorené transakcie, ale je možné použiť body uloženia (savepoints).

V jazyku Go, pri práci s databázami cez balíček database/sql, je možné použiť savepoints na simuláciu vnorených transakcií:

// Začneme hlavnú transakciu
tx, err := db.Begin()
if err != nil {
    // spracovanie chyby
}

// Vytvoríme bod uloženia
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
    // spracovanie chyby
}

// Vykonávame operácie
// ...

// V prípade chyby sa vrátime k bodu uloženia
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")

// Na konci potvrďte hlavnú transakciu
err = tx.Commit()

Týmto spôsobom môžete kontrolovať časti transakcie bez zrušenia celej operácie.