資料行定義格式

MsiViewGetColumnInfoView物件的ColumnInfo 屬性會使用下列格式來描述資料庫資料行定義。 每個資料行都是由函式或屬性所傳回之對應記錄欄位中的字串所描述。 定義字串是由單一字母所組成,代表資料類型,後面接著在字元中 (的寬度,否則為位元組) 。 零的寬度會指定未系結的寬度 (例如長文字欄位和資料流程) 。 大寫字母表示資料行中允許 Null 值。

資料行描述元 定義字串
s? 字串,可變長度 (?=1-255)
s0 字串,可變長度
i2 短整數
i4 長整數
v0 二進位資料流程
G? 暫存字串 (?=0-255)
J? 暫存整數 (?=0,1,2,4)
O0 暫存物件

 

用來描述資料行的字串與 CREATE 和 ALTER 所使用的SQL查詢字串具有下列關聯性。 如需詳細資訊,請參閱SQL語法

傳回值 SQL 語法
s0 LONGCHAR
l0 LONGCHAR LOCALIZABLE
s# CHAR (#)
s# CHARACTER (#)
我# CHAR (#) LOCALIZABLE
我# CHARACTER (#) LOCALIZABLE
i2 SHORT
i2 INT
i2 INTEGER
i4 LONG
v0 OBJECT

 

如果字母不大寫,則SQL語句應該附加 NOT Null。

傳回值 SQL 語法
s0 LONGCHAR NOT Null

 

安裝程式不會在內部將資料行長度限制為數據行定義格式所指定的值。 如果輸入欄位的資料超過指定的資料行長度,封裝就無法通過 套件驗證。 若要在此案例中傳遞驗證,必須變更資料或資料庫架構。 變更標準資料表資料行長度的唯一方式是使用 MsiDatabaseExport匯出資料表、編輯匯出的 .idt 檔案,然後使用 MsiDatabaseImport匯入資料表。 作者無法變更標準資料表中任何資料行的資料行資料類型、可為 Null 或當地語系化屬性。 作者可以建立具有任何資料行屬性之資料行的自訂資料表。

使用 MsiDatabaseMerge 將參考資料庫合併至目標資料庫時,資料行名稱、主鍵數目和資料行資料類型必須相符。 MsiDatabaseMerge 會忽略當地語系化和資料行長度屬性。 如果參考資料庫中的資料行長度是 0 或大於目標資料庫中該資料行的長度, MsiDatabaseMerge 會將目標資料庫中的資料行長度增加為參考資料庫中的長度。

使用 Mergmod.dll 2.0 版時,將合併模組應用程式套用至.msi檔案永遠不會變更現有資料庫資料表的資料行或資料行類型長度。 不過,如果模組將新的資料行加入至有效加入資料行的資料表中,合併模組的應用程式可以變更現有資料庫資料表的架構。 使用小於 2.0 版的Mergemod.dll版本時,合併模組的應用程式永遠不會變更資料行的長度,也不會變更目標資料庫的架構。