Share via


內部驗證

撰寫安裝套件時,您可以使用 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] 或 [識別碼]。 如需詳細資訊,請參閱 資料行資料類型
  • 如果資料只能與字串或整數) 的特定 (值數目有關,請使用 [設定] 資料行來列出可接受的值。

除了資料表、資料行和描述) 之外,下列是資料行清單 (,如果資料行屬於指定的類型,則可以填入_Validation資料表。 (請注意,您不需要填入所有資料行。)

類型 資料行
整數 可為 Null、MinValue、MaxValue、KeyTable、KeyColumn、Set
String 可為 Null、KeyTable、KeyColumn、Category、Set、MinValue、MaxValue
Binary 可為 Null,Category (Category 必須是 「Binary」)

 

撰寫環境可能會使用MSIMODIFY_VALIDATE_DELETE。 此列舉假設您想要刪除資料列。 不會執列欄位或外鍵驗證。 此列舉實際上會執行反向外鍵驗證。 它會檢查_Validation資料表中 KeyTable 和 KeyColumn 資料行中屬於 「deleted」 資料列所屬的資料表參考。 如果有資料行列出包含「deleted」 資料列的資料表作為潛在的外鍵,它會迴圈查看該資料行,以查看是否有任何值參考 「deleted」 資料列中的值。 傳回錯誤表示您可以刪除資料列來中斷資料庫的關係完整性。