Validasi Internal
Saat menulis paket penginstalan, Anda dapat menggunakan fungsi MsiViewModify atau metode View.Modify untuk memastikan bahwa data yang Anda masukkan secara sintaksis benar. Untuk informasi selengkapnya, lihat Mengubah metode. Pada tingkat terendah, kolom tabel database dapat menyimpan bilangan bulat (pendek atau panjang), string, atau data biner. Namun, paket penginstalan memerlukan bilangan bulat atau string tertentu dalam tabel tertentu. Spesifikasi ini dipertahankan dalam tabel _Validation. Misalnya, kolom FileName dari tabel File adalah kolom string, tetapi secara khusus menyimpan nama file. Oleh karena itu, entri Anda tidak hanya harus menjadi string, tetapi juga harus mengikuti persyaratan untuk penamaan file.
Berbagai nilai enum validasi yang digunakan dengan fungsi MsiViewModify memungkinkan validasi langsung pada tingkat yang berbeda. Enum MSIMODIFY_VALIDATE_FIELD dapat digunakan untuk memvalidasi masing-masing bidang rekaman. Ini tidak memvalidasi kunci asing. MSIMODIFY_VALIDATE menghitung seluruh baris dan menyertakan validasi kunci asing. Jika Anda menyisipkan baris baru ke dalam tabel, gunakan enum MSIMODIFY_VALIDATE_NEW untuk memverifikasi bahwa Anda menambahkan data yang valid serta menggunakan kunci primer yang unik. Penyisipan gagal jika kunci primer tidak unik. Jika panggilan ke MsiViewModify dengan salah satu enum validasi mengembalikan kesalahan, Anda dapat melakukan panggilan berulang ke MsiViewGetError untuk mendiagnosis masalah. MsiViewGetError menunjukkan kolom tempat kesalahan terjadi serta nilai enum untuk membantu memperbaiki masalah. Untuk informasi selengkapnya, lihat Metode GetError.
Anda juga dapat menggunakan validasi internal untuk memastikan bahwa penulis lain memasukkan data dengan benar ke dalam tabel kustom Anda. Tambahkan setiap kolom tabel kustom Anda ke tabel _Validation menggunakan nama tabel kustom dan nama kolom sebagai kunci utama. Berikan deskripsi atau tujuan setiap kolom di kolom Deskripsi tabel _Validation. Masukkan persyaratan yang berlaku untuk setiap kolom menggunakan kolom Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Category, dan Set:
- Jika kolom dapat diubah ke Null, masukkan 'Y'. Jika tidak, masukkan 'N'.
- Jika kolom adalah kolom bilangan bulat dan dapat berisi rentang bilangan bulat, masukkan rentang tersebut menggunakan kolom MinValue dan MaxValue.
- Kolom kunci asing diidentifikasi menggunakan kolom KeyTable dan KeyColumn.
- Untuk kolom string, tentukan Kategori seperti Nama File, GUID, atau Pengidentifikasi. Untuk informasi selengkapnya, lihat jenis data kolom.
- Jika data hanya dapat berkaitan dengan jumlah nilai tertentu (string atau bilangan bulat), gunakan kolom Atur untuk mencantumkan nilai yang dapat diterima.
Berikut ini adalah daftar kolom (selain Tabel, Kolom, dan Deskripsi) dalam tabel _Validation yang bisa diisi jika kolom Anda memiliki tipe yang ditentukan. (Perhatikan bahwa Anda tidak perlu mengisi semua kolom.)
Jenis | Kolom |
---|---|
Bilangan bulat | Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set |
String | Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue |
Biner | Dapat diubah ke null, Kategori (Kategori harus "Biner") |
Lingkungan penulisan dapat menggunakan MSIMODIFY_VALIDATE_DELETE. Enum ini mengasumsikan bahwa Anda ingin menghapus baris. Tidak ada bidang atau validasi kunci asing yang dilakukan. Enum ini benar-benar melakukan validasi kunci asing terbalik. Ini memeriksa tabel _Validation untuk referensi di kolom KeyTable dan KeyColumn untuk tabel tempat baris "dihapus" berada. Jika ada kolom yang mencantumkan tabel yang berisi baris "dihapus" sebagai kunci asing potensial, kolom tersebut akan menelusuri kolom tersebut untuk melihat apakah salah satu nilai referensi nilai di baris "dihapus". Pengembalian kesalahan berarti Anda memutuskan integritas relasional database dengan menghapus baris.