Interní ověření
Při vytváření instalačního balíčku můžete použít funkci MsiViewModify nebo Metodu View.Modify k zajištění syntakticky správných dat. Další informace naleznete v tématu Modify metoda. Na nejnižší úrovni může sloupec databázové tabulky ukládat celá čísla (krátká nebo dlouhá), řetězce nebo binární data. Instalační balíček však vyžaduje určitá celá čísla nebo řetězce v určitých tabulkách. Tyto specifikace jsou zachovány v tabulce _Validation. Například sloupec FileName tabulky File je sloupec řetězce, ale konkrétně ukládá název souboru. Proto by vaše položka měla být nejen řetězcem, ale měla by také dodržovat požadavky na pojmenování souborů.
Různé hodnoty výčtu ověřování používané s MsiViewModify funkce umožňují okamžité ověření na různých úrovních. Výčet MSIMODIFY_VALIDATE_FIELD lze použít k ověření jednotlivých polí záznamu. Neověřuje cizí klíče. Výčet MSIMODIFY_VALIDATE ověří celý řádek a zahrnuje ověření cizího klíče. Pokud vkládáte nový řádek do tabulky, pomocí výčtu MSIMODIFY_VALIDATE_NEW ověřte, že přidáváte platná data a používáte jedinečné primární klíče. Vložení selže, pokud primární klíče nejsou jedinečné. Pokud volání MsiViewModify s jedním z ověřovacích výčtů vrátí chybu, můžete provést opakovaná volání MsiViewGetError pro diagnostiku problému. MsiViewGetError označuje sloupec, ve kterém došlo k chybě, a také hodnotu výčtu, která vám pomůže problém vyřešit. Další informace naleznete v tématu GetError metoda.
Můžete také použít interní ověření, abyste zajistili, že ostatní autoři správně zadávají data do vlastní tabulky. Přidejte každý ze sloupců vlastní tabulky do tabulky _Validation pomocí názvu vlastní tabulky a názvu sloupce jako primárního klíče. Zadejte popis nebo účel každého sloupce ve sloupci Popis v tabulce _Validation. Zadejte příslušné požadavky pro každý sloupec pomocí sloupců Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Category a Set:
- Pokud je sloupec nullable, zadejte Y. Pokud ne, zadejte N.
- Pokud je sloupec celočíselnou hodnotou a může obsahovat rozsah celých čísel, zadejte tuto oblast pomocí sloupců MinValue a MaxValue.
- Sloupce cizího klíče se identifikují pomocí sloupců KeyTable a KeyColumn.
- Pro sloupce řetězců zadejte kategorii, jako je název souboru, identifikátor GUID nebo identifikátor. Další informace najdete v tématu datových typů sloupců.
- Pokud se data mohou týkat pouze určitého počtu hodnot (řetězec nebo celé číslo), použijte sloupec Set k výpisu přijatelných hodnot.
Následuje seznam sloupců (kromě tabulky, sloupce a popisu) v _Validation tabulce, která se dá vyplnit, pokud je sloupec zadaného typu. (Všimněte si, že nemusíte vyplňovat všechny sloupce.)
Typ | Sloupce |
---|---|
Celé číslo | Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set |
Řetězec | Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue |
Binární | Nullable, Category (Kategorie musí být "Binary") |
Prostředí pro vytváření můžou využívat MSIMODIFY_VALIDATE_DELETE. Tento výčet předpokládá, že chcete odstranit řádek. Neprovádí se žádné ověření pole ani cizího klíče. Tento výčet ve skutečnosti provádí reverzní ověření cizího klíče. Zkontroluje, jestli tabulka _Validation obsahuje odkazy ve sloupcích KeyTable a KeyColumn pro tabulku, do které patří řádek odstraněný. Pokud jsou sloupce, které uvádějí tabulku obsahující řádek "odstraněno" jako potenciální cizí klíč, prochází tímto sloupcem a zjistí, jestli některé z hodnot odkazovaných na řádek odstraněné hodnoty. Vrácení chyby znamená, že přerušíte relační integritu databáze odstraněním řádku.