Transaksi (ODBC)
Topik ini berlaku untuk kelas MFC ODBC.
Transaksi adalah cara untuk mengelompokkan, atau batch, serangkaian pembaruan pada sumber data sehingga semua dilakukan sekaligus atau tidak ada yang dilakukan jika Anda mengembalikan transaksi. Jika Anda tidak menggunakan transaksi, perubahan pada sumber data dilakukan secara otomatis daripada diterapkan sesuai permintaan.
Catatan
Tidak semua driver database ODBC mendukung transaksi. CanTransact
Panggil fungsi anggota objek CDatabase atau CRecordset Anda untuk menentukan apakah driver Anda mendukung transaksi untuk database tertentu. Perhatikan bahwa CanTransact
tidak memberi tahu Anda apakah sumber data menyediakan dukungan transaksi penuh. Anda juga harus memanggil CDatabase::GetCursorCommitBehavior
dan CDatabase::GetCursorRollbackBehavior
setelah CommitTrans
dan Rollback
untuk memeriksa efek transaksi pada objek terbuka CRecordset
.
Panggilan ke AddNew
fungsi anggota dan Edit
objek CRecordset
segera memengaruhi sumber data saat Anda memanggil Update
. Delete
panggilan juga segera berlaku. Sebaliknya, Anda dapat menggunakan transaksi yang terdiri dari beberapa panggilan ke AddNew
, , Edit
Update
, dan Delete
, yang dilakukan tetapi tidak dilakukan sampai Anda memanggil CommitTrans
secara eksplisit. Dengan membuat transaksi, Anda dapat menjalankan serangkaian panggilan tersebut sambil mempertahankan kemampuan untuk menggulungnya kembali. Jika sumber daya penting tidak tersedia atau beberapa kondisi lain mencegah seluruh transaksi selesai, Anda dapat mengembalikan transaksi alih-alih menerapkannya. Dalam hal ini, tidak ada perubahan milik transaksi yang memengaruhi sumber data.
Catatan
Saat ini, kelas CRecordset
tidak mendukung pembaruan ke sumber data jika Anda telah menerapkan pengambilan baris massal. Ini berarti Anda tidak dapat melakukan panggilan ke AddNew
, , Delete
Edit
, atau Update
. Namun, Anda dapat menulis fungsi Anda sendiri untuk melakukan pembaruan dan kemudian memanggil fungsi tersebut dalam transaksi tertentu. Untuk informasi selengkapnya tentang pengambilan baris massal, lihat Recordset: Mengambil Rekaman secara Massal (ODBC).
Catatan
Selain memengaruhi kumpulan catatan Anda, transaksi memengaruhi pernyataan SQL yang Anda jalankan secara langsung selama Anda menggunakan ODBC HDBC yang terkait dengan objek Anda CDatabase
atau ODBC HSTMT berdasarkan HDBC tersebut.
Transaksi sangat berguna ketika Anda memiliki beberapa rekaman yang harus diperbarui secara bersamaan. Dalam hal ini, Anda ingin menghindari transaksi setengah selesai, seperti mungkin terjadi jika pengecualian dilemparkan sebelum pembaruan terakhir dibuat. Mengelompokkan pembaruan tersebut ke dalam transaksi memungkinkan pemulihan (pembatalan) dari perubahan dan mengembalikan rekaman ke status pratransaksi. Misalnya, jika bank mentransfer uang dari akun A ke akun B, penarikan dari A dan setoran ke B harus berhasil memproses dana dengan benar atau seluruh transaksi harus gagal.
Di kelas database, Anda melakukan transaksi melalui CDatabase
objek. Objek CDatabase
mewakili koneksi ke sumber data, dan satu atau beberapa kumpulan rekaman yang terkait dengan objek tersebut CDatabase
beroperasi pada tabel database melalui fungsi anggota kumpulan rekaman.
Catatan
Hanya satu tingkat transaksi yang didukung. Anda tidak dapat menumpuk transaksi atau tidak dapat menjangkau beberapa objek database.
Topik berikut memberikan informasi selengkapnya tentang bagaimana transaksi dilakukan: