次の方法で共有


列定義の形式

View オブジェクトの msiViewGetColumnInfoColumnInfo プロパティ、データベース列の定義を記述するには、次の形式を使用します。 各列は、関数またはプロパティによって返される対応するレコード フィールドの文字列によって記述されます。 定義文字列は、データ型を表す 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 バージョンを使用する場合、マージ モジュールのアプリケーションによって列の長さが変更されることはありません。また、ターゲット データベースのスキーマは変更されません。