Fungsi JetPrepareUpdate
Berlaku untuk: Windows | Windows Server
Fungsi JetPrepareUpdate
Fungsi JetPrepareUpdate adalah operasi pertama dalam melakukan pembaruan, untuk tujuan menyisipkan rekaman baru atau mengganti rekaman yang ada dengan nilai baru. Updates dilakukan dengan memanggil JetPrepareUpdate, kemudian memanggil JetSetColumn atau JetSetColumns nol atau lebih kali dan akhirnya dengan memanggil JetUpdate untuk menyelesaikan operasi. JetPrepareUpdate dan JetUpdate mengatur batas untuk operasi pembaruan dan penting untuk hanya memiliki status pembaruan akhir dari catatan yang dimasukkan ke dalam indeks. Ini keduanya lebih efisien, tetapi juga diperlukan dalam kasus di mana data harus cocok dengan status yang valid melalui lebih dari pada operasi kolom yang ditetapkan.
Ada beberapa opsi berbeda untuk menyisipkan atau mengganti rekaman dan mereka dijelaskan secara lebih rinci di bawah ini.
JET_ERR JET_API JetPrepareUpdate(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__in unsigned long prep
);
Parameter
sesid
Sesi yang digunakan untuk panggilan ini.
tableid
Kursor yang digunakan untuk panggilan ini.
Persiapan
Opsi yang dapat digunakan untuk mempersiapkan pembaruan, yang mencakup yang berikut ini.
Nilai |
Makna |
---|---|
JET_prepCancel |
Bendera ini menyebabkan JetPrepareUpdate membatalkan pembaruan untuk kursor ini. |
JET_prepInsert |
Bendera ini menyebabkan kursor mempersiapkan penyisipan rekaman baru. Semua data diinisialisasi ke status default untuk rekaman. Jika tabel memiliki kolom penambahan otomatis, maka nilai baru ditetapkan ke rekaman ini terlepas dari apakah pembaruan pada akhirnya berhasil, gagal, atau dibatalkan. |
JET_prepInsertCopy |
Bendera ini menyebabkan kursor mempersiapkan penyisipan salinan rekaman yang ada. Harus ada rekaman saat ini jika opsi ini digunakan. Status awal rekaman baru disalin dari rekaman saat ini. Nilai panjang yang disimpan di luar rekaman secara virtual disalin. |
JET_prepInsertCopyDeleteOriginal |
Bendera ini menyebabkan kursor mempersiapkan penyisipan rekaman yang sama, dan penghapusan atau rekaman asli. Ini digunakan dalam kasus di mana kunci primer telah berubah. |
JET_prepReplace |
Bendera ini menyebabkan kursor mempersiapkan penggantian rekaman saat ini. Jika tabel memiliki kolom versi, maka kolom versi diatur ke nilai berikutnya dalam urutannya. Jika pembaruan ini tidak selesai, maka nilai versi dalam rekaman tidak akan terpengaruh. Kunci pembaruan diambil pada rekaman untuk mencegah sesi lain memperbarui rekaman ini sebelum sesi ini selesai. |
JET_prepReplaceNoLock |
Bendera ini mirip dengan JET_prepReplace, tetapi tidak ada kunci yang diambil untuk mencegah sesi lain memperbarui rekaman ini. Sebaliknya, sesi ini mungkin menerima JET_errWriteConflict ketika memanggil JetUpdate untuk menyelesaikan pembaruan. |
Tampilkan Nilai
Fungsi ini mengembalikan jenis data JET_ERR dengan salah satu kode pengembalian berikut. Untuk informasi selengkapnya tentang kemungkinan kesalahan ESE, lihat Kesalahan Mesin Penyimpanan yang Dapat Diperluas dan Parameter Penanganan Kesalahan.
Menampilkan kode |
Deskripsi |
---|---|
JET_errSuccess |
Operasi berhasil diselesaikan. |
JET_errAlreadyPrepared |
JetPrepareUpdate dipanggil dengan bendera yang valid untuk persiapan tetapi tidak JET_prepCancel dan kursor sudah dalam keadaan disiapkan. |
JET_errClientRequestToStopJetService |
Tidak mungkin untuk menyelesaikan operasi karena semua aktivitas pada instans yang terkait dengan sesi telah berhenti sebagai akibat dari panggilan ke JetStopService. |
JET_errInstanceUnavailable |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi telah mengalami kesalahan fatal yang mengharuskan akses ke semua data dicabut untuk melindungi integritas data tersebut. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errInvalidParameter |
Bendera persiapan yang diberikan bukan bendera yang valid. |
JET_errNotInitialized |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi belum diinisialisasi. |
JET_errNotInTransaction |
JetPrepareUpdate dipanggil untuk menggantikan rekaman yang memiliki kolom SLV. Kolom SLV. Harap dicatat bahwa kolom SLV adalah fitur yang tidak ditujukan untuk penggunaan umum. Fitur ini digunakan untuk mendukung infrastruktur Microsoft Exchange dan tidak dimaksudkan untuk digunakan dalam aplikasi Anda. |
JET_errRestoreInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi. |
JET_errRollbackError |
JetPrepareUpdate dipanggil dengan JET_prepCancel tetapi tidak dapat memutar kembali semua perubahan yang dilakukan pada kolom jenis JET_coltypLongText dan/atau kolom jenis JET_coltypLongBinary. |
JET_errSessionSharingViolation |
Bendera ini tidak dapat digunakan dengan sesi yang sama dari lebih dari satu utas secara bersamaan. Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errTermInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi sedang dimatikan. |
JET_errUpdateNotPrepared |
JetPrepareUpdate dipanggil dengan JET_prepCancel tetapi kursor tidak dalam keadaan siap. |
Jika berhasil, kursor diubah ke status yang disiapkan untuk tujuan pembaruan yang diinginkan, atau dalam kasus JET_prepCancel, kursor dikembalikan ke status yang tidak disiapkan dan perubahan apa pun dibuang.
Jika gagal, status kursor dibiarkan tidak berubah. Jika kegagalan JET_errRollbackError maka status kursor diubah ke status tidak disiapkan tetapi tidak semua perubahan telah dikembalikan.
Keterangan
Menyisipkan salinan rekaman adalah pengoptimalan penting saat merekam berbagi data jenis JET_coltypLongText dan/atau JET_coltypLongBinary. Data ini disimpan di luar rekaman ketika besar dan dimungkinkan bagi beberapa rekaman untuk berbagi representasi fisik data yang sama. Dalam hal ini, data dapat diperbarui dari salah satu rekaman, tetapi melakukannya akan menyebabkan data meledak sehingga setiap rekaman memiliki salinannya sendiri. Tidak dimungkinkan untuk mengubah data dalam satu rekaman dengan modifikasi dari rekaman lain. Selain itu, tidak dimungkinkan untuk memblokir pembaruan satu rekaman dengan pembaruan rekaman lain. Ini adalah fitur utama untuk ESE dan dikenal sebagai Penguncian Tingkat Rekaman.
Operasi JetUpdate yang gagal meninggalkan kursor dalam status pembaruan yang disiapkan. Ini untuk mengizinkan koreksi untuk beberapa kesalahan, seperti nilai kolom yang salah, tanpa mengharuskan status pembaruan dibuat ulang. Ini berarti bahwa dalam semua kasus di mana kursor meninggalkan pembaruan, kursor harus secara eksplisit memanggil JetPrepareUpdate dengan JET_prepCancel.
Persyaratan
Persyaratan | Nilai |
---|---|
Klien |
Memerlukan Windows Vista, Windows XP, atau Windows 2000 Professional. |
Server |
Memerlukan Windows Server 2008, Windows Server 2003, atau Windows 2000 Server. |
Header |
Dinyatakan dalam Esent.h. |
Pustaka |
Gunakan ESENT.lib. |
DLL |
Membutuhkan ESENT.dll. |
Lihat juga
JET_ERR
JET_SESID
JET_TABLEID
JetRetrieveColumn
JetSetColumn
JetUpdate