Freigeben über


Interne Überprüfung

Beim Erstellen eines Installationspakets können Sie die MsiViewModify-Funktion oder die View.Modify-Methode verwenden, um sicherzustellen, dass die eingegebenen Daten syntaktisch korrekt sind. Weitere Informationen finden Sie unter Modify-Methode. Auf der untersten Ebene kann die Spalte einer Datenbanktabelle ganze Zahlen (kurz oder lang), Zeichenfolgen oder binäre Daten speichern. Ein Installationspaket erfordert jedoch bestimmte ganze Zahlen oder Zeichenfolgen in bestimmten Tabellen. Diese Spezifikationen werden in der _Validation-Tabelle verwaltet. Beispielsweise ist die FileName-Spalte in der File- Tabelle eine Zeichenfolgenspalte, aber sie speichert insbesondere einen Dateinamen. Daher sollte Ihr Eintrag nicht nur eine Zeichenfolge sein, sondern auch den Anforderungen für die Benennung von Dateien entsprechen.

Die verschiedenen Enumerationswerte der Überprüfung, die mit der MsiViewModify-Funktion verwendet werden, ermöglichen eine sofortige Überprüfung auf verschiedenen Ebenen. Die MSIMODIFY_VALIDATE_FIELD-Enumeration kann verwendet werden, um einzelne Felder eines Datensatzes zu überprüfen. Sie überprüft keine Fremdschlüssel. Die MSIMODIFY_VALIDATE-Enumeration überprüft eine gesamte Zeile und schließt die Fremdschlüsselüberprüfung ein. Wenn Sie eine neue Zeile in eine Tabelle einfügen, verwenden Sie die MSIMODIFY_VALIDATE_NEW-Enumeration, um zu überprüfen, ob Sie gültige Daten hinzufügen und eindeutige Primärschlüssel verwenden. Beim Einfügen tritt ein Fehler auf, wenn die Primärschlüssel nicht eindeutig sind. Wenn ein Aufruf von MsiViewModify mit einer der Enumerationen zur Überprüfung einen Fehler zurückgibt, können Sie wiederholt MsiViewGetError aufrufen, um das Problem zu diagnostizieren. MsiViewGetError gibt die Spalte an, in der der Fehler aufgetreten ist, sowie den Enumerationswert, um das Problem zu beheben. Weitere Informationen finden Sie unter GetError-Methode.

Sie können auch die interne Überprüfung verwenden, um sicherzustellen, dass andere Ersteller Daten ordnungsgemäß in Ihre benutzerdefinierte Tabelle eingeben. Fügen Sie jede der Spalten Ihrer benutzerdefinierten Tabelle zur Tabelle „_Validation“ hinzu, und verwenden Sie den Namen der benutzerdefinierten Tabelle und den Spaltennamen als Primärschlüssel. Geben Sie in der Description-Spalte der Tabelle „_Validation“ eine Beschreibung oder den Zweck der einzelnen Spalten an. Geben Sie mithilfe der Spalten „Nullable“, „MinValue“, „MaxValue“, „KeyTable“, „KeyColumn“, „Category“ und „Set“ die geltenden Anforderungen für jede Spalte ein:

  • Wenn die Spalte Nullwerte zulässt, geben Sie „Y“ ein. Andernfalls geben Sie „N“ ein.
  • Wenn die Spalte eine Spalte für ganze Zahlen ist und einen Bereich von ganzen Zahlen enthalten kann, geben Sie diesen Bereich mithilfe der Spalten „MinValue“ und „MaxValue“ ein.
  • Fremdschlüsselspalten werden mithilfe der Spalten „KeyTable“ und „KeyColumn“ identifiziert.
  • Für Zeichenfolgenspalten geben Sie eine Kategorie wie Dateiname, GUID oder Bezeichner an. Weitere Informationen finden Sie unter Spaltendatentypen.
  • Wenn sich die Daten nur auf eine bestimmte Anzahl von Werten beziehen können (Zeichenfolge oder ganze Zahl), verwenden Sie die Set-Spalte, um die zulässigen Werte festzulegen.

Im Folgenden finden Sie eine Liste der Spalten (zusätzlich zu „Table“, „Column“ und „Description“) in der Tabelle „_Validation“, die ausgefüllt werden können, wenn Ihre Spalte vom angegebenen Typ ist. (Beachten Sie, dass Sie nicht alle Spalten ausfüllen müssen).

type Spalten
Integer Nullable, MinValue, MaxValue, KeyTable, KeyColumn, Set
String Nullable, KeyTable, KeyColumn, Category, Set, MinValue, MaxValue
Binär Nullable, Category („Category“ muss „Binary“ sein)

 

Erstellungsumgebungen können MSIMODIFY_VALIDATE_DELETE verwenden. Bei dieser Enumeration wird davon ausgegangen, dass Sie die Zeile löschen möchten. Es wird keine Feld- oder Fremdschlüsselüberprüfung durchgeführt. Diese Enumeration führt eigentlich eine umgekehrte Fremdschlüsselüberprüfung durch. Sie prüft die Tabelle „_Validation“ auf Verweise in den Spalten „KeyTable“ und „KeyColumn“ für die Tabelle, zu der die „gelöschte“ Zeile gehört. Wenn es Spalten gibt, in denen die Tabelle, die die „gelöschte“ Zeile enthält, als potenzieller Fremdschlüssel aufgeführt ist, wird diese Spalte zyklisch durchsucht, um zu prüfen, ob einer der Werte auf Werte in der „gelöschten“ Zeile verweist. Eine Fehlerrückgabe bedeutet, dass Sie die relationale Integrität der Datenbank verletzen, indem Sie die Zeile löschen.