Junior — Middle
Czy miałeś doświadczenie w korzystaniu z transakcji zagnieżdżonych podczas pracy z bazami danych?
sobes.tech AI
Odpowiedź od AI
Transakcje zagnieżdżone to możliwość rozpoczęcia innej transakcji wewnątrz jednej, która może być zatwierdzona lub cofnięta niezależnie. Większość systemów zarządzania bazami danych (DBMS) nie obsługuje bezpośrednio transakcji zagnieżdżonych, ale można używać punktów zapisu (savepoints).
W Go, pracując z bazami danych przez pakiet database/sql, można używać savepoints do symulacji transakcji zagnieżdżonych:
// Rozpocznij główną transakcję
tx, err := db.Begin()
if err != nil {
// obsługa błędu
}
// Utwórz punkt zapisu
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
// obsługa błędu
}
// Wykonuj operacje
// ...
// W przypadku błędu, wróć do punktu zapisu
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")
// Na końcu zatwierdź główną transakcję
err = tx.Commit()
W ten sposób można kontrolować części transakcji bez cofania całej operacji.