Junior — Middle
Vai jums ir pieredze ar iekšējām transakcijām, strādājot ar datu bāzēm?
sobes.tech AI
Atbilde no AI
Iegultās transakcijas ir iespēja sākt citu transakciju iekšā vienas, kura var tikt apstiprināta vai atcelta neatkarīgi. Lielākā daļa datu bāzu pārvaldības sistēmu (DBMS) tieši neatbalsta iegultās transakcijas, bet var izmantot saglabāšanas punktus (savepoints).
Go valodā, strādājot ar datu bāzēm caur package database/sql, var izmantot savepoints, lai imitētu iegultās transakcijas:
// Sākam galveno transakciju
tx, err := db.Begin()
if err != nil {
// kļūdas apstrāde
}
// Izveidojam saglabāšanas punktu
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
// kļūdas apstrāde
}
// Veicam operācijas
// ...
// Ja ir kļūda, atgriežamies pie saglabāšanas punkta
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")
// Beigās apstiprinām galveno transakciju
err = tx.Commit()
Tādējādi var kontrolēt transakcijas daļas, neizdzēšot visu operāciju.