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