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