Bagikan melalui


Fungsi JetUpdate2

Berlaku untuk: Windows | Windows Server

Fungsi JetUpdate2

Fungsi JetUpdate2 melakukan operasi pembaruan termasuk menyisipkan baris baru ke dalam tabel atau memperbarui baris yang sudah ada. Fungsi ini berisi daftar opsi grbit yang dapat diatur saat melakukan pembaruan. Menghapus baris tabel dilakukan dengan memanggil JetDelete.

Windows Server 2003: JetUpdate2 diperkenalkan di Windows Server 2003.

JetUpdate2 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, JetUpdate2 dipanggil untuk menyelesaikan operasi pembaruan. Indeks hanya diperbarui oleh JetUpdate atau JetUpdate2, dan bukan selama JetSetColumn atau JetSetColumns.

    JET_ERR JET_API JetUpdate2(
      __in          JET_SESID sesid,
      __in          JET_TABLEID tableid,
      __out_opt     void* pvBookmark,
      __in          unsigned long cbBookmark,
      __out_opt     unsigned long* pcbActual,
      __in            const JET_GRBIT grbit
    );

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.

grbit

Sekelompok bit yang berisi opsi yang akan digunakan untuk panggilan ini, yang mencakup nol atau beberapa hal berikut ini.

Nilai

Makna

JET_bitUpdateCheckESE97Compatibility

Bendera ini menyebabkan pembaruan mengembalikan kesalahan jika pembaruan tidak akan dimungkinkan di ESE versi Windows 2000, yang memberlakukan jumlah maksimum instans kolom multinilai yang lebih kecil di setiap rekaman daripada versi ESE yang lebih baru. Ini hanya penting untuk aplikasi yang ingin mereplikasi data antara aplikasi yang dihosting di Windows 2000 dan aplikasi yang dihosting di Windows Server 2003, atau versi ESE yang lebih baru. Seharusnya tidak diperlukan untuk sebagian besar aplikasi.

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_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_errUpdateNotPrepared

JetPrepareUpdate dipanggil dengan JET_prepCancel tetapi kursor tidak dalam keadaan siap.

JET_errWriteConflict

Operasi penggantian rekaman yang kunci tulisnya belum dialokasikan dapat mengalami konflik tulis pada saat pembaruan.

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

Batasan ukuran rekaman diberlakukan oleh JetSetColumn, dan bukan secara umum oleh JetUpdate. Satu-satunya pengecualian adalah ketika bendera kompatibilitas JET_bitUpdateCheckESE97Compatibility sedang digunakan. Dalam hal ini, seluruh catatan diperiksa karena operasi JetSetColumn individu yang melebihi batas dapat dikompensasi oleh panggilan berikutnya ke JetSetColumn.

Lihat bagian Keterangan di JetUpdate untuk informasi selengkapnya.

Persyaratan

Persyaratan Nilai

Klien

Membutuhkan Windows Vista.

Server

Memerlukan Windows Server 2008 atau Windows Server 2003.

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