列定義の形式
View オブジェクトの msiViewGetColumnInfoと ColumnInfo プロパティ、データベース列の定義を記述するには、次の形式を使用します。 各列は、関数またはプロパティによって返される対応するレコード フィールドの文字列によって記述されます。 定義文字列は、データ型を表す 1 文字と列の幅 (該当する場合はバイト単位) で構成されます。 幅 0 は、無制限の幅 (長いテキスト フィールドやストリームなど) を指定します。 大文字は、列で 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(#) |
l # | CHAR(#) LOCALIZABLE |
l # | CHARACTER(#) LOCALIZABLE |
i2 | 短い |
i2 | INT |
i2 | 整数 |
i4 | 長い |
v0 | オブジェクト |
文字が大文字でない場合は、SQL ステートメントに NOT NULL を付加する必要があります。
戻り値 | SQL 構文 |
---|---|
s0 | LONGCHAR NOT NULL |
インストーラーは、列の長さを列定義形式で指定された値に制限しません。 フィールドに入力されたデータが指定された列の長さを超えた場合、パッケージはパッケージ検証 渡すことができません。 この場合、検証に合格するには、データまたはデータベース スキーマを変更する必要があります。 標準テーブルの列の長さを変更する唯一の方法は、MsiDatabaseExportを使用してテーブルをエクスポートし、エクスポートした .idt ファイルを編集してから、MsiDatabaseImportを使用してテーブルをインポートすることです。 作成者は、標準テーブル内の列の列データ型、null 値許容属性、またはローカリゼーション属性を変更できません。 作成者は、列属性を持つ列を含むカスタム テーブルを作成できます。
MsiDatabaseMerge を使用して参照データベースをターゲット データベースにマージする場合、列名、主キーの数、列データ型が一致する必要があります。 msiDatabaseMerge 、ローカリゼーション属性と列長属性は無視されます。 参照データベース内の列の長さが 0 以上の場合、MsiDatabaseMerge は、ターゲット データベースの列の長さを参照データベースの長さに増やします。
バージョン 2.0 Mergmod.dll 使用する場合、マージ モジュールを .msi ファイルに適用しても、既存のデータベース テーブルの列の長さや列の種類は変更されません。 ただし、マージ モジュールのアプリケーションでは、モジュールが列の追加に有効なテーブルに新しい列を追加する場合、既存のデータベース テーブルのスキーマを変更できます。 バージョン 2.0 未満の Mergemod.dll バージョンを使用する場合、マージ モジュールのアプリケーションによって列の長さが変更されることはありません。また、ターゲット データベースのスキーマは変更されません。