インストール パッケージを作成するときは、MsiViewModify 関数または View.Modify メソッドを使用して、入力したデータが構文的に正しいことを確認できます。 詳細については、「Modify メソッドの」を参照してください。 最下位レベルでは、データベース テーブルの列には、整数 (短または長)、文字列、またはバイナリ データを格納できます。 ただし、インストール パッケージには、特定のテーブル内の特定の整数または文字列が必要です。 これらの仕様は、_Validation テーブルに保持されます。 たとえば、File テーブル の FileName 列は文字列列ですが、具体的にはファイル名が格納されます。 したがって、エントリを文字列にする必要があるだけでなく、ファイルの名前付けの要件にも従う必要があります。
MsiViewModify 関数で使用されるさまざまな検証列挙値を使用すると、さまざまなレベルですぐに検証できます。 MSIMODIFY_VALIDATE_FIELD列挙型を使用して、レコードの個々のフィールドを検証できます。 外部キーは検証されません。 MSIMODIFY_VALIDATE列挙型は、行全体を検証し、外部キーの検証を含みます。 テーブルに新しい行を挿入する場合は、MSIMODIFY_VALIDATE_NEW列挙型を使用して、一意の主キーを使用するだけでなく、有効なデータを追加していることを確認します。 主キーが一意でない場合、挿入は失敗します。 検証列挙型の 1 つ MsiViewModify を呼び出すとエラーが返された場合は、MsiViewGetError を繰り返し呼び出して問題を診断できます。 MsiViewGetError は、エラーが発生した列と、問題の解決に役立つ列挙値を示します。 詳細については、「GetError メソッドの」を参照してください。
また、内部検証を使用して、他の作成者がカスタム テーブルにデータを正しく入力するようにすることもできます。 カスタム テーブル名と列名を主キーとして使用して、カスタム テーブルの各列を _Validation テーブルに追加します。 _Validation テーブルの [説明] 列に、各列の説明または目的を指定します。 Nullable、MinValue、MaxValue、KeyTable、KeyColumn、Category、Set 列を使用して、各列に該当する要件を入力します。
- 列が Null 許容の場合は、'Y' を入力します。 そうでない場合は、'N' を入力します。
- 列が整数列で、整数の範囲を含めることができる場合は、MinValue 列と MaxValue 列を使用してその範囲を入力します。
- 外部キー列は、KeyTable 列と KeyColumn 列を使用して識別されます。
- 文字列列の場合は、ファイル名、GUID、識別子などのカテゴリを指定します。 詳細については、列データ型 参照してください。
- データが特定の数の値 (文字列または整数) にのみ関連できる場合は、Set 列を使用して、許容される値を一覧表示します。
列が指定した型の場合に入力できる、_Validation テーブルの列 (テーブル、列、説明に加えて) の一覧を次に示します。 (すべての列を入力する必要はありません。
| 種類 | 列 |
|---|---|
| 整数 | Null 許容、MinValue、MaxValue、KeyTable、KeyColumn、Set |
| 糸 | Null 許容、KeyTable、KeyColumn、Category、Set、MinValue、MaxValue |
| バイナリ | Null 許容、カテゴリ (カテゴリは "バイナリ" である必要があります) |
作成環境では、MSIMODIFY_VALIDATE_DELETEを利用できます。 この列挙型は、行を削除することを前提としています。 フィールドまたは外部キーの検証は実行されません。 この列挙型は、実際には逆外部キー検証を実行します。 _Validationテーブルで、"削除済み" 行が属するテーブルの KeyTable 列と KeyColumn 列内の参照がチェックされます。 "削除済み" 行を含むテーブルを外部キーとして一覧表示する列がある場合は、その列を循環して、"削除済み" 行の値が参照されているかどうかを確認します。 エラーが返されるということは、行を削除することによってデータベースのリレーショナル整合性を中断することを意味します。