Fungsi MsiViewModify (msiquery.h)

Fungsi MsiViewModify memperbarui rekaman yang diambil.

Sintaks

UINT MsiViewModify(
  [in] MSIHANDLE hView,
  [in] MSIMODIFY eModifyMode,
  [in] MSIHANDLE hRecord
);

Parameter

[in] hView

Menangani ke tampilan.

[in] eModifyMode

Menentukan mode modifikasi. Parameter ini bisa menjadi salah satu nilai berikut.

Nilai Makna
MSIMODIFY_SEEK
-1
Merefresh informasi dalam rekaman yang disediakan tanpa mengubah posisi dalam tataan hasil dan tanpa memengaruhi operasi pengambilan berikutnya. Rekaman kemudian dapat digunakan untuk Pembaruan, Penghapusan, dan Refresh berikutnya. Semua kolom kunci utama tabel harus berada dalam kueri dan rekaman harus memiliki setidaknya bidang sebanyak kueri. Pencarian tidak dapat digunakan dengan kueri multi-tabel. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan. Lihat juga keterangannya.
MSIMODIFY_REFRESH
0
Menyegarkan informasi dalam rekaman. Harus terlebih dahulu memanggil MsiViewFetch dengan rekaman yang sama. Gagal untuk baris yang dihapus. Bekerja dengan rekaman baca-tulis dan baca-saja.
MSIMODIFY_INSERT
1
Menyisipkan rekaman. Gagal jika baris dengan kunci primer yang sama ada. Gagal dengan database baca-saja. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_UPDATE
2
Updates rekaman yang sudah ada. Kunci nonprimary saja. Harus terlebih dahulu memanggil MsiViewFetch. Gagal dengan rekaman yang dihapus. Hanya berfungsi dengan catatan baca-tulis.
MSIMODIFY_ASSIGN
3
Menulis data saat ini dalam kursor ke baris tabel. Updates merekam jika kunci primer cocok dengan baris yang ada dan menyisipkan jika tidak cocok. Gagal dengan database baca-saja. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_REPLACE
4
Updates atau menghapus dan menyisipkan rekaman ke dalam tabel. Harus terlebih dahulu memanggil MsiViewFetch dengan rekaman yang sama. Updates merekam apakah kunci primer tidak berubah. Menghapus baris lama dan menyisipkan baru jika kunci primer telah berubah. Gagal dengan database baca-saja. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_MERGE
5
Menyisipkan atau memvalidasi rekaman dalam tabel. Menyisipkan jika kunci primer tidak cocok dengan baris apa pun dan memvalidasi jika ada kecocokan. Gagal jika rekaman tidak cocok dengan data dalam tabel. Gagal jika ada rekaman dengan kunci duplikat yang tidak identik. Hanya berfungsi dengan catatan baca-tulis. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_DELETE
6
Hapus baris dari tabel. Anda harus terlebih dahulu memanggil fungsi MsiViewFetch dengan rekaman yang sama. Gagal jika baris telah dihapus. Hanya berfungsi dengan catatan baca-tulis. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_INSERT_TEMPORARY
7
Menyisipkan rekaman sementara. Informasi tidak persisten. Gagal jika ada baris dengan kunci primer yang sama. Hanya berfungsi dengan catatan baca-tulis. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_VALIDATE
8
Memvalidasi rekaman. Tidak memvalidasi di seluruh gabungan. Anda harus terlebih dahulu memanggil fungsi MsiViewFetch dengan rekaman yang sama. Dapatkan kesalahan validasi dengan MsiViewGetError. Bekerja dengan rekaman baca-tulis dan baca-saja. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_VALIDATE_NEW
9
Memvalidasi rekaman baru. Tidak memvalidasi di seluruh gabungan. Memeriksa kunci duplikat. Dapatkan kesalahan validasi dengan memanggil MsiViewGetError. Bekerja dengan rekaman baca-tulis dan baca-saja. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_VALIDATE_FIELD
10
Memvalidasi bidang rekaman yang diambil atau baru. Bisa memvalidasi satu atau beberapa bidang rekaman yang tidak lengkap. Dapatkan kesalahan validasi dengan memanggil MsiViewGetError. Bekerja dengan rekaman baca-tulis dan baca-saja. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.
MSIMODIFY_VALIDATE_DELETE
11
Memvalidasi rekaman yang akan dihapus nanti. Anda harus terlebih dahulu memanggil MsiViewFetch. Gagal jika baris lain mengacu pada kunci utama baris ini. Validasi tidak memeriksa keberadaan kunci primer baris ini dalam properti atau string. Tidak memeriksa apakah kolom adalah kunci asing untuk beberapa tabel. Dapatkan kesalahan validasi dengan memanggil MsiViewGetError. Bekerja dengan catatan baca-tulis dan baca-saja. Mode ini tidak dapat digunakan dengan tampilan yang berisi gabungan.

[in] hRecord

Tangani ke rekaman untuk dimodifikasi.

Mengembalikan nilai

Fungsi MsiViewModify mengembalikan nilai berikut:

Perhatikan bahwa dalam situasi memori rendah, fungsi ini dapat meningkatkan pengecualian STATUS_NO_MEMORY.

Keterangan

Nilai MSIMODIFY_VALIDATE, MSIMODIFY_VALIDATE_NEW, MSIMODIFY_VALIDATE_FIELD, dan MSIMODIFY_VALIDATE_DELETE fungsi MsiViewModify tidak melakukan pembaruan aktual; mereka memastikan bahwa data dalam rekaman valid. Penggunaan enumerasi validasi ini mengharuskan database berisi tabel _Validation.

Anda dapat memanggil MSIMODIFY_UPDATE atau MSIMODIFY_DELETE dengan rekaman segera setelah menggunakan MSIMODIFY_INSERT, MSIMODIFY_INSERT_TEMPORARY, atau MSIMODIFY_SEEK asalkan Anda BELUM memodifikasi bidang ke-0 dari rekaman yang disisipkan atau dicari.

Untuk menjalankan pernyataan SQL apa pun, tampilan harus dibuat. Namun, tampilan yang tidak membuat kumpulan hasil, seperti CREATE TABLE, atau INSERT INTO, tidak dapat digunakan dengan MsiViewModify untuk memperbarui tabel melalui tampilan.

Anda tidak bisa mengambil rekaman yang berisi data biner dari satu database lalu menggunakan rekaman tersebut untuk menyisipkan data ke database lain. Untuk memindahkan data biner dari satu database ke database lain, Anda harus mengekspor data ke file lalu mengimpornya ke database baru menggunakan kueri dan MsiRecordSetStream. Ini memastikan bahwa setiap database memiliki salinan data biner sendiri.

Perhatikan bahwa tindakan kustom hanya bisa menambahkan, memodifikasi, atau menghapus baris, kolom, atau tabel sementara dari database. Tindakan kustom tidak dapat mengubah data persisten dalam database, seperti data yang merupakan bagian dari database yang disimpan di disk. Untuk informasi selengkapnya, lihat Mengakses Sesi Penginstal Saat Ini dari Dalam Tindakan Kustom.

Jika fungsi gagal, Anda dapat memperoleh informasi kesalahan yang diperluas dengan menggunakan MsiGetLastErrorRecord.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Installer 5.0 di Windows Server 2012, Windows 8, Windows Server 2008 R2 atau Windows 7. Windows Installer 4.0 atau Windows Installer 4.5 di Windows Server 2008 atau Windows Vista. Pemasang Windows pada Windows Server 2003 atau Windows XP
Target Platform Windows
Header msiquery.h
Pustaka Msi.lib
DLL Msi.dll

Lihat juga

Fungsi Akses Database Umum