Wewnętrzna walidacja
Podczas tworzenia pakietu instalacyjnego można użyć funkcji MsiViewModify lub metody View.Modify, aby upewnić się, że wprowadzone dane są poprawne składniowo. Aby uzyskać więcej informacji, zobacz Modify method. Na najniższym poziomie kolumna tabeli bazy danych może przechowywać liczby całkowite (krótkie lub długie), ciągi lub dane binarne. Jednak pakiet instalacyjny wymaga określonych liczb całkowitych lub ciągów w niektórych tabelach. Te specyfikacje są przechowywane w tabeli _Validation. Na przykład kolumna FileName tabeli File jest kolumną ciągu, ale w szczególności przechowuje nazwę pliku. W związku z tym nie tylko wpis powinien być ciągiem, ale także spełniać wymagania dotyczące nazewnictwa plików.
Różne wartości wyliczenia weryfikacji używane z MsiViewModify funkcji umożliwiają natychmiastową walidację na różnych poziomach. Wyliczenie MSIMODIFY_VALIDATE_FIELD może służyć do weryfikowania poszczególnych pól rekordu. Nie weryfikuje kluczy obcych. Wyliczenie MSIMODIFY_VALIDATE weryfikuje cały wiersz i obejmuje walidację klucza obcego. Jeśli wstawiasz nowy wiersz do tabeli, użyj wyliczenia MSIMODIFY_VALIDATE_NEW, aby sprawdzić, czy dodajesz prawidłowe dane, a także używasz unikatowych kluczy podstawowych. Wstawianie kończy się niepowodzeniem, jeśli klucze podstawowe nie są unikatowe. Jeśli wywołanie MsiViewModify z jednym z wyliczenia weryfikacji zwraca błąd, możesz wykonać powtarzające się wywołania MsiViewGetError w celu zdiagnozowania problemu. MsiViewGetError wskazuje kolumnę, w której wystąpił błąd, a także wartość wyliczenia, aby pomóc rozwiązać problem. Aby uzyskać więcej informacji, zobacz metodę GetError.
Możesz również użyć wewnętrznej weryfikacji, aby upewnić się, że inni autorzy poprawnie wprowadzają dane do tabeli niestandardowej. Dodaj każdą kolumnę tabeli niestandardowej do tabeli _Validation przy użyciu niestandardowej nazwy tabeli i nazwy kolumny jako klucza podstawowego. Podaj opis lub przeznaczenie każdej kolumny w kolumnie Opis tabeli _Validation. Wprowadź odpowiednie wymagania dla każdej kolumny przy użyciu kolumn null, MinValue, MaxValue, KeyTable, KeyColumn, Category i Set:
- Jeśli kolumna ma wartość Nullable, wprowadź wartość "Y". W przeciwnym razie wprowadź wartość "N".
- Jeśli kolumna jest kolumną całkowitą i może zawierać zakres liczb całkowitych, wprowadź ten zakres przy użyciu kolumn MinValue i MaxValue.
- Kolumny kluczy obcych są identyfikowane przy użyciu kolumn KeyTable i KeyColumn.
- W przypadku kolumn ciągów określ kategorię, taką jak nazwa pliku, identyfikator GUID lub identyfikator. Aby uzyskać więcej informacji, zobacz typy danych kolumn.
- Jeśli dane mogą dotyczyć tylko określonej liczby wartości (ciąg lub liczba całkowita), użyj kolumny Ustaw, aby wyświetlić listę dopuszczalnych wartości.
Poniżej znajduje się lista kolumn (oprócz tabeli, kolumny i opisu) w tabeli _Validation, którą można wypełnić, jeśli kolumna ma określony typ. (Pamiętaj, że nie trzeba wypełniać wszystkich kolumn).
Typ | Kolumny |
---|---|
Liczba całkowita | Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set |
Struna | Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue |
Dwójkowy | Nullable, Category (Kategoria musi być "Binary") |
Środowiska tworzenia mogą korzystać z MSIMODIFY_VALIDATE_DELETE. Wyliczenie zakłada, że chcesz usunąć wiersz. Nie jest wykonywana żadna walidacja pola ani klucza obcego. To wyliczenie faktycznie wykonuje odwrotną walidację klucza obcego. Sprawdza ona tabelę _Validation dla odwołań w kolumnach KeyTable i KeyColumn dla tabeli, do której należy wiersz "usunięty". Jeśli istnieją kolumny, które wyświetlają tabelę zawierającą wiersz "usunięty" jako potencjalny klucz obcy, przechodzi przez nią w celu sprawdzenia, czy którakolwiek z wartości odwołujących się do wartości w wierszu "usunięto". Zwracany błąd oznacza, że przerywasz integralność relacyjną bazy danych, usuwając wiersz.