Junior — Middle
Έχετε εμπειρία με ενσωματωμένες συναλλαγές κατά την εργασία με βάσεις δεδομένων;
sobes.tech AI
Απάντηση από AI
Οι εμφωλευμένες συναλλαγές είναι η δυνατότητα να ξεκινήσει κανείς μια άλλη μέσα σε μια συναλλαγή, η οποία μπορεί να επιβεβαιωθεί ή να ακυρωθεί ανεξάρτητα. Τα περισσότερα συστήματα διαχείρισης βάσεων δεδομένων (DBMS) δεν υποστηρίζουν άμεσα τις εμφωλευμένες συναλλαγές, αλλά μπορούν να χρησιμοποιηθούν σημεία αποθήκευσης (savepoints).
Στη Go, κατά την εργασία με βάσεις δεδομένων μέσω του πακέτου database/sql, μπορούν να χρησιμοποιηθούν savepoints για την προσομοίωση εμφωλευμένων συναλλαγών:
// Ξεκινάμε την κύρια συναλλαγή
tx, err := db.Begin()
if err != nil {
// διαχείριση σφάλματος
}
// Δημιουργούμε ένα σημείο αποθήκευσης
_, err = tx.Exec("SAVEPOINT sp1")
if err != nil {
// διαχείριση σφάλματος
}
// Εκτελούμε λειτουργίες
// ...
// Σε περίπτωση σφάλματος, επιστρέφουμε στο σημείο αποθήκευσης
_, err = tx.Exec("ROLLBACK TO SAVEPOINT sp1")
// Στο τέλος, επιβεβαιώνουμε την κύρια συναλλαγή
err = tx.Commit()
Έτσι, μπορούμε να ελέγξουμε τμήματα της συναλλαγής χωρίς να ακυρώσουμε ολόκληρη τη λειτουργία.