內部驗證
撰寫安裝套件時,您可以使用 MsiViewModify 函式或 View.Modify 方法,以確保您輸入的數據語法正確。 如需詳細資訊,請參閱 Modify方法。 在最低層級,資料庫數據表的數據行可以儲存整數(短或長)、字串或二進位數據。 不過,安裝套件需要特定數據表中的特定整數或字串。 這些規格會在 _Validation 資料表中維護,。 例如,File 資料表的 FileName 資料行 是字串數據行,但會特別儲存檔名。 因此,您的項目不僅應該是字串,而且也應該遵循命名檔案的需求。
與 MsiViewModify 函式搭配使用的各種驗證列舉值,可讓不同層級立即進行驗證。 MSIMODIFY_VALIDATE_FIELD列舉可用來驗證記錄的個別欄位。 它不會驗證外鍵。 MSIMODIFY_VALIDATE列舉會驗證整個數據列,並包含外鍵驗證。 如果您要將新的數據列插入數據表中,請使用 MSIMODIFY_VALIDATE_NEW 列舉來確認您要新增有效的數據,以及使用唯一的主鍵。 如果主鍵不是唯一的,插入就會失敗。 如果呼叫 MsiViewModify 且其中一個驗證列舉傳回錯誤,您可以重複呼叫 MsiViewGetError 來診斷問題。 MsiViewGetError 指出發生錯誤的數據行,以及列舉值,以協助修正問題。 如需詳細資訊,請參閱 GetError 方法。
您也可以使用內部驗證來確保其他作者正確地將數據輸入自訂數據表。 使用自訂數據表名稱和數據行名稱做為主鍵,將自定義數據表的每個數據行新增至_Validation數據表。 在_Validation數據表的 [描述] 數據行中,提供每個數據行的描述或用途。 使用 Nullable、MinValue、MaxValue、KeyTable、KeyColumn、Category 和 Set 數據行,輸入每個數據行適用的需求:
- 如果數據行可為 Null,請輸入 『Y』。 如果沒有,請輸入 『N』。
- 如果數據行是整數數據行,而且可以包含整數範圍,請使用MinValue和 MaxValue資料行輸入該範圍。
- 外鍵數據行是使用 KeyTable 和 KeyColumn 數據行來識別。
- 針對字串數據行,請指定 [類別],例如 [檔名]、[GUID] 或 [標識符]。 如需詳細資訊,請參閱 數據行數據類型。
- 如果數據只能與特定數目的值(字串或整數)有關,請使用 Set 數據行來列出可接受的值。
以下是_Validation數據表中數據行的清單(除了 Table、Column 和 Description 之外),如果數據行是指定的類型,則可以填入。 (請注意,您不需要填入所有數據行。
類型 | 列 |
---|---|
整數 | Nullable、MinValue、MaxValue、KeyTable、KeyColumn、Set |
字串 | 可為 Null、KeyTable、KeyColumn、Category、Set、MinValue、MaxValue |
二元的 | 可為 Null,Category (Category 必須是 “Binary”) |
撰寫環境可能會使用MSIMODIFY_VALIDATE_DELETE。 此列舉假設您想要刪除資料列。 不會執行欄位或外鍵驗證。 此列舉實際上會執行反向外鍵驗證。 它會檢查_Validation數據表中 KeyTable 和 KeyColumn 數據行中是否有 「deleted」 資料列所屬數據表的參考。 如果有數據行列出包含「deleted」 資料列的數據表作為潛在的外鍵,它會迴圈查看該數據行,以查看 「deleted」 資料列中是否有任何值參考值。 傳回錯誤表示您可以藉由刪除資料列來中斷資料庫的關係完整性。