Database.Merge メソッド

Database オブジェクトの Merge メソッドを使うと、参照データベースとベース データベースをマージすることができます。

構文

Database.Merge(
  reference,
  errorTable
)

パラメーター

reference

データベースにマージするために必要な Database オブジェクト。

errorTable

マージ競合があるテーブルの名前、テーブル内の競合する行数、マージ競合があるテーブルへの参照を含むテーブルの名前 (省略可能)。

戻り値

このメソッドは値を返しません。

解説

Database オブジェクトの MsiDatabaseMerge 関数と Merge メソッドは、インストール パッケージに含まれるモジュールのマージには使用できません。 これらは、Windows インストーラー パッケージに Merge モジュールをマージするために使わないでください。 インストール パッケージの作成者がインストール パッケージに Merge モジュールを含めるには、「マージ モジュールの適用」トピックで説明されているガイドラインに従ってください。

Merge メソッドを使っても、参照データベースの埋め込みキャビネット ファイルまたは埋め込み変換を対象のデータベースにコピーできません。 バイナリ テーブルまたはアイコン テーブルに一覧表示されている埋め込みデータ ストリームは、参照データベースから対象のデータベースにコピーされます。 参照データベースに埋め込まれたストレージは、対象のデータベースにはコピーされません。

テーブルを指定しない場合、一般的なエラー メッセージにはマージ競合を含むテーブル数が表示されます。 任意のテーブルを渡すことができますが、他のすべての列は null 許容である必要があります。列が null 許容でない場合、エラー テーブルの更新操作は失敗するからです。 Merge メソッドを使うと、マージ競合が見つかった場合に使われる列が自動作成されるので、新しく作成したテーブルを渡すこともできます。 マージの競合を示すために 2 つの列が使われます。 1 つ目の列はテーブル名と主キーの列です。 2 つ目の列は、そのテーブルの中でマージに失敗した行数です。

両方のデータベースにある同じ名前のテーブルで、主キーの数、列の型、列の数、または列名が一致しない場合、Merge メソッドは失敗し、何が起こったかを示すエラー メッセージが表示されます。

Error テーブルを残すには、Error テーブルが属するデータベースをエラー ハンドラーでコミットする必要があります。 ただし、このコミットは、3 番目の列を使って、マージ競合が発生したテーブルへの参照を取得した後に行う必要があります。

メソッドが失敗した場合は、LastErrorRecord メソッドを使って拡張エラー情報を取得できます。

必要条件

要件
バージョン
Windows Server 2012、Windows 8、Windows Server 2008 R2、または Windows 7 の Windows インストーラー 5.0。 Windows Server 2008 または Windows Vista の Windows インストーラー 4.0 または Windows インストーラー 4.5。 Windows Server 2003 または Windows XP の Windows インストーラー
[DLL]
Msi.dll
IID
IID_IDatabase が 000C109D-0000-0000-C000-000000000046 と義されている