İç Doğrulama
Yükleme paketi yazarken, girdiğiniz verilerin söz dizimsel olarak doğru olduğundan emin olmak için MsiViewModify işlevini veya View.Modify yöntemini kullanabilirsiniz. Daha fazla bilgi için bkz. Değiştirme yöntemi. En düşük düzeyde, veritabanı tablosunun sütunu tamsayıları (kısa veya uzun), dizeleri veya ikili verileri depolayabilir. Ancak, bir yükleme paketi belirli tablolarda belirli tamsayılar veya dizeler gerektirir. Bu belirtimler _Validation tablosunda tutulur. Örneğin, Dosya tablosu FileName sütunu bir dize sütunudur, ancak özel olarak bir dosya adı depolar. Bu nedenle, girdinizin yalnızca bir dize olması değil, aynı zamanda dosyaları adlandırma gereksinimlerini de karşılaması gerekir.
MsiViewModify işleviyle kullanılan çeşitli doğrulama sabit listesi değerleri, farklı düzeylerde anında doğrulamaya olanak tanır. MSIMODIFY_VALIDATE_FIELD sabit listesi, bir kaydın tek tek alanlarını doğrulamak için kullanılabilir. Yabancı anahtarları doğrulamaz. MSIMODIFY_VALIDATE sabit listesi bir satırın tamamını doğrular ve yabancı anahtar doğrulaması içerir. Tabloya yeni bir satır ekliyorsanız, geçerli veriler ekleyip benzersiz birincil anahtarlar kullandığınızı doğrulamak için MSIMODIFY_VALIDATE_NEW numaralandırmasını kullanın. Birincil anahtarlar benzersiz değilse ekleme başarısız olur. Doğrulama sabit listelerinden biriyle MsiViewModify çağrısı bir hata döndürürse, sorunu tanılamak için MsiViewGetError için yinelenen çağrılar yapabilirsiniz. MsiViewGetError, hatanın oluştuğu sütunu ve sorunu düzeltmeye yardımcı olacak sabit listesi değerini gösterir. Daha fazla bilgi için bkz. GetError yöntemi.
Ayrıca, diğer yazarların özel tablonuza verileri doğru şekilde girmelerini sağlamak için iç doğrulamayı da kullanabilirsiniz. Özel tablonuzun sütunlarının her birini birincil anahtar olarak özel tablo adını ve sütun adını kullanarak _Validation tabloya ekleyin. _Validation tablosunun Açıklama sütunundaki her sütunun açıklamasını veya amacını belirtin. Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Category ve Set sütunlarını kullanarak her sütun için geçerli gereksinimleri girin:
- Sütun Null atanabilir ise bir 'Y' girin. Aksi takdirde bir 'N' girin.
- Sütun bir tamsayı sütunuysa ve bir tamsayı aralığı içerebiliyorsa, MinValue ve MaxValue sütunlarını kullanarak bu aralığı girin.
- Yabancı anahtar sütunları KeyTable ve KeyColumn sütunları kullanılarak tanımlanır.
- Dize sütunları için Dosya adı, GUID veya Tanımlayıcı gibi bir Kategori belirtin. Daha fazla bilgi için bkz. sütun veri türlerini.
- Veriler yalnızca belirli sayıda değerle (dize veya tamsayı) ilgiliyse, kabul edilebilir değerleri listelemek için Ayarla sütununu kullanın.
Aşağıda, sütununuz belirtilen türdeyse doldurulabilen _Validation tablosundaki sütunların (Tablo, Sütun ve Açıklama'ya ek olarak) listesi yer alır. (Tüm sütunları doldurmanız gerekmediğini unutmayın.)
Tür | Sütun |
---|---|
Tam sayı | Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set |
Dizgi | Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue |
İkili | Null atanabilir, Kategori (Kategori "İkili" olmalıdır) |
Yazma ortamları MSIMODIFY_VALIDATE_DELETE kullanabilir. Bu sabit listesi, satırı silmek istediğinizi varsayar. Alan veya yabancı anahtar doğrulaması yapılmaz. Bu sabit listesi aslında ters yabancı anahtar doğrulaması gerçekleştirir. "Silinen" satırın ait olduğu tablonun KeyTable ve KeyColumn sütunlarındaki başvurular için _Validation tablosunu denetler. Olası bir yabancı anahtar olarak "silinmiş" satırı içeren tabloyu listeleyen sütunlar varsa, değerlerden herhangi birinin "silinmiş" satırdaki değerlere başvurup başvurmadığını görmek için bu sütun arasında geçiş yapılır. Hata döndürme, satırı silerek veritabanının ilişkisel bütünlüğünü bozduğunuz anlamına gelir.