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.