Bagikan melalui


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, , EditUpdate, 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, , DeleteEdit, 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:

Baca juga

Open Database Koneksi ivity (ODBC)