Fungsi JetUpdate
Berlaku untuk: Windows | Windows Server
Fungsi JetUpdate
Fungsi JetUpdate melakukan operasi pembaruan termasuk menyisipkan baris baru ke dalam tabel atau memperbarui baris yang sudah ada. Menghapus baris tabel dilakukan dengan memanggil JetDelete.
JetUpdate adalah langkah terakhir dalam melakukan penyisipan atau pembaruan. Pembaruan dimulai dengan memanggil JetPrepareUpdate lalu dengan memanggil JetSetColumn atau JetSetColumns satu atau beberapa kali untuk mengatur status rekaman. Akhirnya, JetUpdate dipanggil untuk menyelesaikan operasi pembaruan. Indeks hanya diperbarui oleh JetUpdate atau JetUpdate2, dan bukan selama JetSetColumn atau JetSetColumns.
JET_ERR JET_API JetUpdate(
__in JET_SESID sesid,
__in JET_TABLEID tableid,
__out_opt void* pvBookmark,
__in unsigned long cbBookmark,
__out_opt unsigned long* pcbActual
);
Parameter
sesid
Sesi yang digunakan untuk panggilan ini.
tableid
Kursor yang digunakan untuk panggilan ini.
pvBookmark
Penunjuk ke bookmark yang dikembalikan untuk baris yang disisipkan.
cbBookmark
Ukuran buffer yang diacu oleh pvBookmark.
pcbActual
Ukuran bookmark yang dikembalikan untuk baris yang disisipkan yang dikembalikan dalam pvBookmark.
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_errBufferTooSmall |
Buffer yang diberikan untuk marka buku rekaman tidak cukup besar untuk menyimpan marka buku rekaman. |
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_errColumnIllegalNull |
Sama seperti JET_errNullInvalid. |
JET_errDiskFull |
Operasi pembaruan memerlukan pertumbuhan file database, atau alokasi file log, tetapi drive disk tempat file database atau seri log berada penuh. Atau, file database berada pada volume berformat FAT32 dan file database sudah 4GBytes, batas per file untuk FAT32. |
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. Windows XP: Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errInvalidParameter |
Parameter persiapan yang diberikan dalam fungsi JetPrepareUpdate bukan bendera yang valid. |
JET_errKeyDuplicate |
Kunci indeks untuk rekaman ini adalah duplikat kunci indeks lain untuk rekaman lain yang sudah ada dalam tabel dan indeks tidak mengizinkan duplikat. |
JET_errKeyTruncated |
Rekaman yang disisipkan atau diperbarui memiliki satu atau beberapa indeks yang kunci yang dihasilkan akan melebihi ukuran maksimum yang diizinkan. Akibatnya, operasi gagal mencegah pemotokan kunci. |
JET_errMultiValuedIndexViolation |
Catatan yang disisipkan atau diperbarui memiliki kolom multinilai terindeks dengan dua nilai atau lebih yang identik dalam ukuran kunci panjang maksimum yang ditetapkan untuk indeks. Akibatnya, rekaman memiliki dua entri identik dalam indeks yang tidak valid. |
JET_errNotInitialized |
Tidak dimungkinkan untuk menyelesaikan operasi karena instans yang terkait dengan sesi belum diinisialisasi. |
JET_errNullInvalid |
Satu atau beberapa kolom dalam rekaman yang akan disisipkan atau dalam status diperbarui dari rekaman yang diganti adalah NULL yang melanggar batasan yang ditentukan untuk kolom tersebut. |
JET_errNullKeyDisallowed |
Satu atau beberapa indeks didefinisikan untuk tidak mengizinkan kunci NULL dan status rekaman yang disisipkan atau diperbarui yang diganti melanggar batasan yang ditentukan ini. |
JET_errRecordPrimaryChanged |
Operasi penggantian rekaman telah memperbarui kunci primer. Updates ke kolom kunci primer harus dilakukan dengan menghapus rekaman yang ada dan menyisipkan rekaman baru dengan data yang diinginkan. |
JET_errRestoreInProgress |
Tidak dimungkinkan untuk menyelesaikan operasi karena operasi pemulihan sedang berlangsung pada instans yang terkait dengan sesi. |
JET_errSessionSharingViolation |
Sesi yang sama tidak dapat digunakan untuk lebih dari satu utas secara bersamaan. Windows XP: 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_errTransReadOnly |
Adalah ilegal untuk mencoba pembaruan ketika berada di dalam cakupan transaksi baca-saja. Transaksi baca-saja adalah transaksi yang telah dimulai menggunakan panggilan ke JetBeginTransaction2 dengan JET_bitTransactionReadOnly. Windows XP: Kesalahan ini hanya akan dikembalikan oleh Windows XP dan rilis yang lebih baru. |
JET_errUpdateNotPrepared |
JetPrepareUpdate dipanggil dengan JET_prepCancel tetapi kursor tidak dalam keadaan siap. |
JET_errVersionStoreOutOfMemory |
Operasi gagal karena tidak ada cukup memori untuk menyimpan informasi transaksi tentang pembaruan. |
JET_errWriteConflict |
Sesi lain sebelumnya telah mengunci rekaman untuk pembaruan. Pembaruan yang dicoba oleh sesi ini akan gagal. |
Jika berhasil, operasi pembaruan terbuka pada kursor selesai. Jika kolom kenaikan otomatis ditentukan untuk tabel, maka nilai ini diatur untuk rekaman yang disisipkan. Jika kolom versi ditentukan untuk tabel, maka nilainya diinisialisasi untuk rekaman yang baru disisipkan, atau dinaikkan setiap kali rekaman diganti. Semua indeks, termasuk indeks berkluster dan non-kluster diperbarui.
Jika gagal, tidak ada perubahan apa pun yang dilakukan pada database. Sebelum menyisipkan dan sebelum mengganti fungsi panggilan balik mungkin telah dipanggil, tetapi setelah menyisipkan dan setelah mengganti panggilan balik tidak akan dipanggil, karena yang terakhir tidak dapat menyebabkan pembaruan gagal. Buffer salinan kursor dibiarkan dalam status siap, sehingga peluang ada untuk secara bertahap memperbaiki masalah yang menyebabkan kesalahan dan mencoba kembali operasi pembaruan.
Keterangan
Fungsi panggilan balik dapat didaftarkan untuk dipanggil sebelum atau sesudah penyisipan, dan sebelum atau sesudah pembaruan.
Batasan ukuran rekaman diberlakukan oleh JetSetColumn, dan bukan secara umum oleh JetUpdate.
Penting untuk memahami dampak melakukan sejumlah besar operasi pembaruan di dalam satu transaksi. Setiap pembaruan ke database harus dilacak oleh mesin database di penyimpanan versi. Penyimpanan versi menyimpan rekaman langsung dari semua versi yang berbeda dari setiap rekaman atau entri indeks dalam database yang dapat dilihat oleh semua transaksi aktif. Versi ini digunakan untuk mendukung kontrol konkurensi multi-versi yang digunakan oleh mesin database untuk mendukung transaksi menggunakan isolasi rekam jepret. Setelah mesin database kelelahan, sumber daya yang digunakan untuk menyimpan versi ini maka tidak dapat lagi menerima perubahan lebih lanjut sampai beberapa transaksi telah menyimpulkan untuk memungkinkan sumber daya ini diklaim kembali. Ketika mesin dalam keadaan ini, semua pembaruan akan gagal dengan JET_errVersionStoreOutOfMemory. Sumber daya yang tersedia untuk mesin database untuk menyimpan versi ini dapat dikontrol menggunakan JetSetSystemParameter dengan JET_paramMaxVerPages dan JET_paramGlobalMinVerPages.
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
JetDelete
JetPrepareUpdate
JetRegisterCallback
JetRetrieveColumn
JetRetrieveColumns
JetSetColumn
JetSetColumns
JetSetSystemParameter
Parameter Sistem