Dalam interaksi pangkalan data Go, penggunaan penangguhan untuk pengembalian transaksi boleh menimbulkan persoalan. Pertimbangkan contoh berikut:
tx, err := db.Begin() if err != nil { log.Fatal(err) } defer tx.Rollback() // Why defer?
Contoh ini menggambarkan cara penarikan balik transaksi ditangguhkan dalam Go. Menangguhkan pemulangan semula memastikan bahawa ia sentiasa dipanggil, walaupun jika operasi berikut menghadapi ralat atau kod tiba-tiba kembali sebelum pemulangan semula manual.
Mengapa Tidak Komit Dahulu dan Putar Balik Secara Manual pada Ralat?
Seseorang mungkin tertanya-tanya mengapa tidak hanya melakukan transaksi dahulu dan tarik balik secara manual jika ralat berlaku. Pendekatan ini tidak cekap kerana ia boleh menyebabkan penciptaan rekod anak yatim atau ketidakkonsistenan dalam pangkalan data.
Menangguhkan Rollback dan Commit Aliran Kerja
Dengan menangguhkan rollback, kod memastikan pemulangan semula akan berlaku jika operasi berikut gagal. Begini cara aliran kerja berlaku:
Faedah Menangguhkan Pemulihan
Tambahan Nota
Atas ialah kandungan terperinci Mengapa Menangguhkan Kembalikan Pangkalan Data dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!